Java程序设计:选实验2 类的初级应用

发布时间:2024年01月17日

(1)编写一个Student类。类中包含以下成员变量:name(姓名)、stuID(学号)、class(班级)和course(主修的课程)。定义对应的方法对这几个成员变量的值进行设置和读取。(i)在Student类外的main方法里面,创建该类的一个对象,并调用各个方法,展示相应的效果。(ii)在Student类内的main方法里面,创建该类的一个对象,并调用各个方法,展示相应的效果。

package 选实验2;

public class Student {

	//定义成员变量
	String name,classname,course;
	int stuID;
	//定义对成员变量进行设置的方法
	void setName(String n)
	{
		name = n;
	}
	void setClassname(String t)
	{
		classname = t;
	}
	void setCourse(String c)
	{
		course = c;
	}
	void setStuID(int r)
	{
		stuID = r;
	}
	//定义读取成员变量的方法
	String getName()
	{
		return name;
	}
	String getClassname()
	{
		return classname;
	}
	String getCourse()
	{
		return course;
	}
	int getStuID()
	{
		return stuID;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 Student student;
		 student = new Student();
		 
         //设置对象成员变量
         student.setName("John");
         student.setClassname("创新班01");
         student.setCourse("计算机科学与技术");
         student.setStuID(2020150213);
         
         //读取对象成员变量
         System.out.println("姓名:"+student.getName());
         System.out.println("学号:"+student.getStuID());
         System.out.println("班级:"+student.getClassname());
         System.out.println("主修的课程:"+student.getCourse());
	}

}
package 选实验2;

public class TestStudent {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 Student student;
		 student = new Student();
		 
         //设置对象成员变量
         student.setName("John");
         student.setClassname("创新班01");
         student.setCourse("计算机科学与技术");
         student.setStuID(2020150213);
         
         //读取对象成员变量
         System.out.println("姓名:"+student.getName());
         System.out.println("学号:"+student.getStuID());
         System.out.println("班级:"+student.getClassname());
         System.out.println("主修的课程:"+student.getCourse());
	}

}

(2)编写一个队列类Queue,用来存储byte型数据,队列中的数据是先进先出的。具体要求如下:成员变量byte [] elements用来存储byte型数据;成员变量short?size用来表示存储的byte型数据的个数;构造方法Queue在初始化队列的时候,设置队列的容量为16;方法enqueue(int?v)用来往队列中添加一个byte型数据;方法dequeue()用从队列中删除并返回一个byte型数据;方法getSize()用来返回队列的大小。

package 选实验2;
class Queue
{
	byte[] elements;
	//存储byte型数据
	short size;
	//存储的byte型数据的个数
	int maxsize;
	//队列的初始容量
	
	//初始化队列
	Queue() 
	{
		maxsize = 16;
		elements = new byte[maxsize];
	}
	//往队列中添加一个byte型数据
	void enqueue(int v)
	{
	    elements[size] = (byte)v;
	    size ++;
	}
	//从队列中删除并返回一个被删除的byte型数据
	byte dequeue()
	{
		byte temp = elements[0];
		for(int i=1;i<size;i++)
		{
			elements[i-1]=elements[i];
		}
		size --;
		return temp;
	}
	//返回队列的大小
	int getSize()
	{
		return size;
	}
	//展示整个队列
	void display()
	{
		System.out.print("当前队列为:");
		for(int i=0;i<size;i++)
		{
			System.out.print(elements[i]+" ");
		}
		System.out.println();
	}
}
public class TestQueue {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        Queue queue;
        queue = new Queue();
        //先添加5个数:1 2 3 4 5
        for(int i=1;i<=5;i++)
        {
        	queue.enqueue(i);
        }
        System.out.println("当前队列大小为"+queue.getSize());
        queue.display();

        //再删去前2个数:3 4 5
        System.out.println("删去的数为:");
        for(int j=1;j<=2;j++)
        {
        	System.out.println(queue.dequeue());
        }
        System.out.println("当前队列大小为"+queue.getSize());
        queue.display();
	}

}

(3)编写一个复数类Complex:成员变量包括realPart和imagePart,分别代表实数部分和虚数部分;构造方法Complex()用于将实数部分和虚数部分都置为0;构造方法Complex(int r, int i)用于将实数部分置为r、虚数部分置为i;方法Complex complexMULTIPLE(Complex c)将当前复数对象与形参复数对象相乘,注意 (a+bj)*(c+dj)=ac-bd+(ad+bc)j;String?toString()把当前复数对象的实数部分和虚数部分组合成a+bj的字符串形式。

package 选实验2;
class Complex
{
	int realPart;
	int imagePart;
	
	//将实数部分和虚数部分都置为0
    Complex() 
    {
		realPart = 0;
		imagePart = 0;
	}
    
    //将实数部分置为r、虚数部分置为i
    Complex(int r,int i) 
    {
		realPart = r;
		imagePart = i;
	}
    
    //当前复数对象与形参复数对象相乘
    void ComplexMultiple(Complex C)
    {
    	int a = realPart;
    	int b = imagePart;
    	int c = C.realPart;
    	int d = C.imagePart;
    	realPart = a*c-b*d;
    	imagePart  = a*d+b*c;
    }
    
    //把当前复数对象的实数部分和虚数部分组合成a+bj的字符串形式
    //重写Object类的toString()方法
    public String toString()
    {
    	String result;
    	if(realPart==0)
    	{
    		if(imagePart==0)result="0";//0
    		else result=imagePart+"j";//bj
    	}
    	else 
    	{
    		if(imagePart==0)result=realPart+"";//a
    		else
    		{
    			if(imagePart<0)//a-bj
    			{
    				result=realPart+imagePart+"j";
    			}
    			else//a+bj
    			{
    				result=realPart+"+"+imagePart+"j";
				}
    		}
		}
        return result;
    }
}
public class TestComplex {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
       Complex c1;
       c1 = new Complex(3,5);
       System.out.println(c1.toString());
       Complex c2;
       c2 = new Complex(2,3);
       System.out.println(c2.toString());
       
       //输出复数3+5i和复数2+3j相乘的结果
       c1.ComplexMultiple(c2);
       System.out.println(c1.toString());
	}

}

(4)编写一个秒表类StopWatch,成员变量和方法自定。编写一个支持快速排序算法的类QuickSort,成员变量和方法自定。对100000, 1000000, …等不同长度的数组中的元素(元素的值随机给定)进行排序,并用秒表对象来记录排序所用的时间。

package 选实验2;

import java.util.Scanner;

class QuickSort
{
	//定义成员变量
	int[] elements;
	int size;
	//定义有参构造函数,保留无参构造函数
	QuickSort() {}
	QuickSort(int[] e,int s) 
	{
		size = s;
		elements = new int [s];
		for(int i=0;i<size;i++)
		{
			elements[i] = e[i];
		}
	}
	//快速排序算法(分治递归思想)
	public void quicksort(int[] e,int l,int r)
	{
		//递归终止条件
		if(l>=r)return;
		//x作为基准数,选中间的数
		int x=e[(l+r)/2],i=l-1,j=r+1;
		while(i<j)
		{
			do i++;while(e[i]<x);
			do j--;while(e[j]>x);
			//此时e[i]出现:大于x却在x左边
			//小于x却在x右边的情况,则交换
			if(i<j)
			{
				int temp=e[i];
				e[i] = e[j];
				e[j] = temp;
			}
		}
		//以j为边界,继续分治递归两边
		quicksort(e, l, j);
		quicksort(e, j+1, r);
	}
	//显示序列
	void display()
	{
		System.out.println("快速排序后为:");
		for(int i=0;i<size;i++)
		{
			System.out.print(elements[i]+" ");
		}
		System.out.println();
	}
}
class StopWatch
{
	long startTime;
	long endTime;
	//无参和含参构造函数
	StopWatch() {}
	StopWatch(long a,long b) 
	{
	    startTime = a;
	    endTime = b;
	}
	//获取开始时间
	void getStarttime()
	{
		startTime = System.nanoTime();
	}
	//获取结束时间
	void getEndtime()
	{
		endTime = System.nanoTime();
	}
	//打印总运行时间
	void display()
	{
		long ans=endTime-startTime;
		System.out.println("程序运行的时间为:"+ans+"纳秒");
	}
}
public class TestSort {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        //获取数组个数
		Scanner cin = new Scanner(System.in);
		int num = cin.nextInt();
		int[] e = new int[num];
		//获取数组元素
		for(int i=0;i<num;i++)
		{
			e[i] = cin.nextInt();
		}
		//快速排序
		QuickSort qSort = new QuickSort(e, num);
		StopWatch sWatch = new StopWatch(0,0);
		sWatch.getStarttime();
		qSort.quicksort(e,0,num-1);
		qSort.display();
		sWatch.getEndtime();
		sWatch.display();
		cin.close();
	}

}

文章来源:https://blog.csdn.net/gyeolhada/article/details/135597825
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。