JAVA作业2&实验2 类与对象

6-1 Person类 (20分)

构造Person类。包括姓名(name),性别(sex)和年龄(age)。提供所有属性的set和get函数,提供print函数打印其信息

输入描述:
姓名(name),性别(sex)和年龄(age)

输出描述:
用户信息

裁判测试程序样例:

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);      
         String name = scan.next();      
         String sex = scan.next();      
         int age = scan.nextInt();
         Person p = new Person();
         p.setName(name);
         p.setSex(sex);
         p.setAge(age);
         p.print();
         scan.close(); 
    }
}

/* 你的代码被嵌在这里 */

输入样例:
在这里给出一组输入。例如:

Lucy male 23

输出样例:
在这里给出相应的输出。例如:

name:Lucy; sex:male; age:23
 static class Person
    {
         private String name;
         private String sex;
         private int age;
        public void setName(String name)
        {
            this.name=name;
        }
        public void setSex(String sex)
        {
            this.sex=sex;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public void print()
        {
            System.out.print("name:"+name+"; ");
            System.out.print("sex:"+sex+"; ");
            System.out.print("age:"+age);
        }
    }

6-2 Person类2 (20分)

在Person类的基础上,添加一个带参数的构造函数,参数分别为姓名,性别,年龄,提供print函数打印其信息

输入描述:
姓名(name),性别(sex)和年龄(age)

输出描述:
用户信息

裁判测试程序:

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);      
         String name = scan.next();      
         String sex = scan.next();      
         int age = scan.nextInt();
         Person p = new Person(name,sex,age);
         p.print();
         scan.close(); 
    }
}

/* 你的代码被嵌在这里*/

输入样例:
在这里给出一组输入。例如:

Lucy male 23

输出样例:
在这里给出相应的输出。例如:

name:Lucy; sex:male; age:23

ans:

class Person
    {
    	public Person(String name,String sex,int age)
    	{
    		this.name=name;
    		this.sex=sex;
    		this.age=age;
    	}
         private String name;
         private String sex;
         private int age;
        public void setName(String name)
        {
            this.name=name;
        }
        public void setSex(String sex)
        {
            this.sex=sex;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public void print()
        {
            System.out.print("name:"+name+"; ");
            System.out.print("sex:"+sex+"; ");
            System.out.print("age:"+age);
        }
    }

6-3 学生类 (20分)

有一个学生类的结构如下:

class Student {
 private int no; 
 private String name; 
 private int score;

public Student(int _no, String _name, int _score) {
    no = _no;
    name = _name;
            score = _score;
}
    public int getNo() {return no;}
    public String getName() {return name;}
    public int getScore() {return score;}

public void print(){
    System.out.println(no + " "+name+" "+score);
}
}

请构造main函数完成如下功能: 从键盘中读入三个学生的信息,比较他们的成绩,按照成绩由高到低排列输出

输入描述:
三个学生的学号、姓名、成绩

输出描述:
由高到低排列输出的三个学生信息

裁判测试程序样例:

/*你的代码被嵌在这里*/

class Student {
    private int no;
    private String name;
        private int score;

    public Student(int _no, String _name, int _score) {
        no = _no;
        name = _name;
                score = _score;
    }
        public int getNo() {return no;}
        public String getName() {return name;}
        public int getScore() {return score;}

    public void print(){
        System.out.println(no + " "+name+" "+score);
    }
}

输入样例:
在这里给出一组输入。例如:

1 wang 89
2 liu 78
3 ma 90

输出样例:
在这里给出相应的输出。例如:

3 ma 90
1 wang 89
2 liu 78

ans:

import java.util.Scanner;
import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        Scanner s=new Scanner(System.in);
        Student[] arr=new Student[3];
        int[] b=new int[3];
        for(int i=0;i<3;i++) {
            int no = s.nextInt();
            String name = s.next();
            int score = s.nextInt();
            arr[i] = new Student(no, name, score);
            b[i]=score;
        }
        //修改冒泡排序
        //控制多少轮
        for (int i = 1; i < arr.length; i++) {
            //控制每一轮的次数
            for (int j = 0; j <= arr.length - 1 - i; j++) {
                if (b[j]> b[j+1]) {//冒泡排序,b[j]与b[j+1]比较的是交换后的值
                    Student temp=new Student(0,"0",0);//Student temp,error,未赋值
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    int t;//成绩排序
                    t=b[j];b[j]=b[j+1];b[j+1]=t;
                }
            }
        }
        for(int j=2;j>=0;j--)
        {
           arr[j].print();
        }
   }
}

6-5 家具类 (20分)

构建家具类Furniture,包括长、宽、高,均为整数(cm)。提供相应的构造函数和get、set函数。 Main函数里构造家具对象,并调用相应的函数。

输入描述:
家具对象的长宽高

输出描述:
家具对象的相关属性

裁判测试程序样例

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Furniture f = new Furniture(sc.nextInt(),sc.nextInt(),sc.nextInt());
        System.out.println(f.getHeight());
        System.out.println(f.getLength());
        System.out.println(f.getWidth());
    }
}

/* 你的代码被嵌在这里*/

输入样例:
在这里给出一组输入。例如:

50 60 100

输出样例:
在这里给出相应的输出。例如:

100
50
60
 class Furniture
    {
        int length;
        int width;
        int height;
        public Furniture(int a,int b,int c)
        {
             length=a;
             width=b;
             height=c;
        }
        void setHeight(int a)
        {
            height=a;
        }
        void setLength(int b)
        {
            length=b;
        }
        void setWidth(int c)
        {
            width=c;
        }
        int getHeight()
        {
            return height;
        }
        int getLength()
        {
            return length;
        }
        int getWidth()
        {
            return width;
        }
    }

7-1 MyDate类 (20分)

构造日期类MyDate类,包含年月日,提供相应的get和set函数,提供void print()函数打印日期,提供int compare(MyDate d)测试当前对象和参数对象d的早晚,如果早则返回-1,晚则返回1,相等则返回0 在main函数中,读入两个日期对象,输出第一个日期对象的信息,输出两个对象的比较结果

输入格式:
两个日期对象,第一个为当前日期对象的年月日,第二个为待比较日期对象的年月日

输出格式:
当前日期对象的信息,当前对象和待比较日期对象的比较结果

输入样例:
在这里给出一组输入。例如:

2008 6 12 2009 6 22

输出样例:
在这里给出相应的输出。例如:

6/12/2008 -1

ans:


import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
         Scanner sc=new Scanner(System.in);
         int year1=sc.nextInt();
         int month1=sc.nextInt();
         int day1=sc.nextInt();
         MyDate d1= new MyDate(year1,month1,day1);
         int year2=sc.nextInt();
         int month2=sc.nextInt();
         int day2=sc.nextInt();
         MyDate d2=new MyDate(year2,month2,day2);
         int flag;
         if(d1.getYear()>d2.getYear()||d1.getMonth()>d2.getMonth()||d1.getDay()>d2.getDay())
             flag=1;
         else if(d1.getYear()==d2.getYear()&&d1.getMonth()==d2.getMonth()&&d1.getDay()==d2.getDay())
             flag=0;
         else
             flag=-1;
         d1.print();
         System.out.print(" "+flag);
         sc.close();
    }
    static class MyDate
    {
        int year;
        int month;
        int day;
        public MyDate(int year,int month,int day)
        {
            this.year=year;
            this.month=month;
            this.day=day;
        }
        void setYear(int y)
        {
            year=y;
        }
        void setMonth(int m)
        {
            month=m;
        }
        void setDay(int d)
        {
            day=d;
        }
        int getYear()
        {
            return year;
        }
        int getMonth()
        {
            return month;
        }
        int getDay()
        {
            return day;
        }
        void print()
        {
            System.out.print(getMonth()+"/"+getDay()+"/"+getYear());
        }
    }
}

7-2 Person类3 (20分)

在Person类的基础上,添加一个静态变量avgAge表示所有Person对象的平均年龄(整数),提供方法getAvgAge能够读取该静态变量。 main函数中,构造三个Person类的对象,读入他们的信息,并输出他们的平均年龄

输入格式:
多个用户信息

输出格式:
平均年龄

输入样例:
在这里给出一组输入。例如:

a male 23
b female 21
c male 22

输出样例:
在这里给出相应的输出。例如:

22
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //int n=scan.nextInt();
        for(int i=0;i<3;i++)
        {
            String name = scan.next();
            String sex = scan.next();
            int age = scan.nextInt();
            Person p = new Person(name,sex,age);
        }
        System.out.print(Person.getAverage());
        scan.close();
    }
    public static class Person
    {
        public Person(String name,String sex,int age)
        {
            this.name=name;
            this.sex=sex;
            this.age=age;
            average+=age;
            aver = average/3;
        }
        private String name;
        private String sex;
        private int age;
        private static int average=0;
        private static int aver;
        public void setName(String name)
        {
            this.name=name;
        }
        public void setSex(String sex)
        {
            this.sex=sex;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getName()
        {
            return name;
        }
        public String getSex()
        {
            return sex;
        }
        public int getAge()
        {
            return age;
        }
        public static int getAverage() {
            return aver;
        }
    }
}

6-1 汽车类 (20分)

编写汽车类,其功能有启动(start),停止(stop),加速(speedup)和减速(slowDown),启动和停止可以改变汽车的状态(on/off),初始时状态为off,速度为0,speedUp和slowDown可以调整汽车的速度,每调用一次汽车速度改变10(加速增10,减速减10),汽车启动后才能加减速,加速上限为160,减速下限为0,汽车速度减为0后才能停止,给出汽车类的定义。 Main函数中构造一个汽车对象,并对该对象进行操作,各个操作的编号为:

1.start
2.stop
3.speedup
4.slowdown 操作完成后打印出汽车的状态和速度。
输入描述:
操作

输出描述:
汽车的状态和速度

裁判测试程序样例:

import java.util.Scanner;
public class Main{

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        Car c = new Car();
        for (int i=0;i<n;i++) {
            int a = s.nextInt();
            switch (a) {
            case 1: c.start(); break;
            case 2: c.stop(); break;
            case 3: c.speedUp(); break;
            case 4: c.slowDown(); break;
            }
        }
        System.out.print(c.status + " ");
        System.out.println(c.speed);
    }

}

/* 你的代码被嵌在这里 */

输入样例:
在这里给出一组输入。例如:

8
1 3 3 4 3 4 4 2

输出样例
在这里给出相应的输出。例如:

off 0
 class Car
	{ 
		int speed=0;
		String status="off";
		public void start()
		{
			status="on";
		}
		public void stop()
		{
			if(speed==0)
				status="off";
		}
		public void speedUp()
		{
			if(status=="on")
				speed+=10;
			if(speed>=160)
			{
				speed=160;
			}
		}
		public void slowDown()
		{
			if(status=="on")
				speed-=10;
			if(speed<=0)
			{
				speed=0;
			}
		}
	}

6-2 设计直线类 (20分)
两点可以确定一条直线,请设计一个直线类Line,需要通过两个点Point对象来确定。

设计类Point,包含两个坐标值,提供必要的构造函数和其他辅助函数

设计类Line,包含两个点,提供必要的构造函数和其他辅助函数

为Line提供一个getLength方法返回直线的长度

在Main类的main方法中,读入2对Point的坐标,输出2对Point所表示的直线的长度,保留两位小数(可用System.out.printf)

裁判测试程序样例:

import java.util.Scanner;
public class Main{
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    Point p1 = new Point(sc.nextDouble(),sc.nextDouble());
    Point p2 = new Point(sc.nextDouble(),sc.nextDouble());
    Line l = new Line(p1,p2);
    System.out.printf("%.2f",l.getLength());
    }
}

/* 请在这里填写答案 */

输入样例:

23.2 22.1 12.2 3.2

输出样例:

21.87
class Point
    {
    	double x,y;
    	public Point(double x,double y)
    	{
    	       this.x=x;
    	       this.y=y;
    	}
    	public void SetX(double x)
    	{
    		this.x=x;
    	}
    	public void SetY(double y)
    	{
    		this.y=y;
    	}
    	public double GetX()
    	{
    		return x;
    	}
    	public double GetY()
    	{
    		return y;
    	}
    	
    }
class Line
    {
    	Point p1,p2;
    	public Line(Point p1,Point p2)
    	{
    		this.p1=p1;
    		this.p2=p2;
    	}
    	public double getLength()
    	{
    		return Math.sqrt(Math.pow((p1.x-p2.x), 2)+Math.pow((p1.y-p2.y), 2));
    	}
    }

6-3 学生数统计 (20分)

构造类Student,包含姓名,性别,年龄。提供必要的构造函数和其他成员函数。

提供静态函数getMaleCount,getFemaleCount,能够获得所有在main函数中构造的Student对象中男生和女生的数量。

main函数中先读取学生个数n,而后构造n个学生对象,最后分别打印其中男生和女生的人数。(输入的三个字段用空格分开,名字内部没有空格,性别用数字表示,1为男生,0为女生)

裁判测试程序样例:

在这里给出函数被调用进行测试的例子。例如:
import java.util.Scanner;
public class Main{
 public static void main(String[] args){
   Scanner sc = new Scanner(System.in);
     int n = sc.nextInt();
     for(int i=0;i<n;i++){
         Student s = new Student(sc.next(),sc.nextInt(), sc.nextInt());
     }
     System.out.println("number of male students:" + Student.getMaleCount() );
     System.out.println("number of female students:" + Student.getFemaleCount() );
 }
}
/* 请在这里填写答案 */

输入样例:

5
LiuMing 0 20
FangDa 1 19
DaShan 0 20
ChenHuang 0 21
DeLi 0 20

输出样例:

number of male students:1
number of female students:4

统计男生和女生个数在构造函数中进行

 class Student
  {
  	 
  	public Student(String name,int sex,int age)
  	{
  		this.name=name;
  		this.sex=sex;
  		this.age=age;
  	  if(getSex()==1)
  	  	   malenumber++;
        if(getSex()==0)
  	   femalenumber++;
         
  	}
      private String name;
      private static int sex;
      private int age;
      static int malenumber=0;
      static int femalenumber=0;
     public void setName(String name)
     {
         this.name=name;
     }
     public void setSex(int sex)
     {
         this.sex=sex;
     }
     public void setAge(int age) {
         this.age = age;
     }
     public String getName()
     {
     	    return name;
     }
     public static int getSex()
     {
     	    return sex;
     }
     public int getAge()
     {
     	    return age;
     }
     public static int getMaleCount()
     {
  	   return malenumber;
     }
     public static int getFemaleCount()
     {
  	   return femalenumber;
     }
 }

7-1 设计BankAccount类 (20分)

设计一个BankAccount类,这个类包括:

(1)一个int型的balance表时账户余额。

(2)一个无参构造方法,将账户余额初始化为0。

(3)一个带一个参数的构造方法,将账户余额初始化为该输入的参数。

(4)一个getBlance()方法,返回账户余额。

(5)一个withdraw()方法:带一个amount参数,并从账户余额中提取amount指定的款额。

(6)一个deposit()方法:带一个amount参数,并将amount指定的款额存储到该银行账户上。

提供main函数,构造一个账户对象,并对其进行存取款操作。

其中操作类型类型为1表示存款,2表示取款,每次操作后都打印余额

输入格式:
账户余额 操作个数 操作类型 操作金额

输出格式:
每次操作后的余额

输入样例:
在这里给出一组输入。例如:

0
4
1 100
1 200
2 100
2 100

输出样例:
在这里给出相应的输出。例如:

100
300
200
100
import java.util.Scanner;
class BankAccout 
{
    int balance;
    public BankAccout()
    {
        balance=0;
    }
    public BankAccout(int b)
    {
        this.balance=b;
    }
    public int getBalance()
    {
        return balance;
    }
    public int withdraw(int amount)
    {
    	if(amount<=this.balance)
        this.balance -= amount;
        return this.balance;
    }
    public int deposit(int amonut)
    {
        this.balance+=amonut;
        return this.balance;
    }
}
class Main
{
    public static void main(String[] args) 
    {
        
        Scanner s = new Scanner(System.in);
        int b = s.nextInt();
        BankAccout account=new BankAccout(b);
		int n = s.nextInt();
		for (int i=0;i<n;i++) {
			int a = s.nextInt();
			int money=s.nextInt();
			switch (a) {
			case 1: account.deposit(money);break;
			case 2: account.withdraw(money);break;
			default:break;
			}
			System.out.println(account.getBalance());
		}

    }
}
  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值