Java 实验2

2-1汽车类

编写汽车类,其功能有启动(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() {
            	 speed=0;
            	 status="on";
            	 
             }
             public void stop() {
            	 if(speed==0) {
            		 status = "off";
            	 }
             }
             public void speedUp() {
            	 if(status=="on"&&speed<=150) {
            		 speed+=10;
            	 }
             }
             public void slowDown() {
            	 if(status=="on"&&speed>=10) {
            		 speed-=10;
            	 }
             }
             
}

2-2设计直线类

两点可以确定一条直线,请设计一个直线类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;
      double y;
      public Point (double a,double b) {
    	  this.x =a;
    	  this.y=b;
      }
}
 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));
    }
}

2-3 学生数统计

构造类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 String name;
    public int sex;
    public int age;
    static int m=0;
    static int f=0;
    public Student(String _name,int _sex,int _age)
    {
        this.name=_name;
        this.sex=_sex;
        this.age=_age;
        if(_sex==1)
            m++;
        if(_sex==0)
            f++;
    }
    public static int getMaleCount()
    {
        return m;
    }
    public static int getFemaleCount()
    {
        return f;
    }
}

2-4设计BankAccount类

设计一个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 BankAccount{
    int blance;

    public BankAccount(){
        blance=0;
    }
    public BankAccount(int l){
        blance=l;
    }

    public int getBlance(){
        return blance;
    }
    public void withDraw(int account){
        if(blance>=account)
            blance-=account;
    }
    public void deposit(int account){
        blance+=account;
    }
}
public class Main{
    public static void main(String[] args){
        int blance;
        int n;
        int oppo;
        int account;
        
        Scanner sc=new Scanner(System.in);
        blance=sc.nextInt();
        BankAccount b=new BankAccount(blance);
        n=sc.nextInt();
        for(int i=0;i<n;i++){
            oppo=sc.nextInt();
            if(oppo==1){
                b.deposit(sc.nextInt());
            }
            else if(oppo==2)
                b.withDraw(sc.nextInt());
            System.out.println(b.getBlance());
        }
        
    }
}

2-5设计一个”无名的粉“类

为“无名的粉”写一个类:class WuMingFen 要求:

有三个属性:面码:String theMa  粉的分量(两):int quantity 是否带汤:boolean likeSoup;

写一个构造方法,以便于简化初始化过程,如:
  WuMingFen f1 = new WuMingFen("牛肉",3,true);;  

重载构造方法,使得初始化过程可以多样化:
  WuMingFen f2 = new WuMingFen("牛肉",2);;  

如何使得下列语句构造出来的粉对象是酸辣面码、2两、带汤的?
  WuMingFen f3 = new WuMingFen();;  

写一个普通方法:check(),用于查看粉是否符合要求。即:将对象的三个属性打印在控制台上。

系统参考程序代码如下:

 
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String theMa = sc.next();
        int quantity = sc.nextInt();
        boolean likeSoup = sc.nextBoolean();
        c
        //使用三个参数的构造方法创建WuMingFen对象  取名 f1

        //使用两个参数的构造方法创建WuMingFen对象  取名 f2

        //使用无参构造方法创建WuMingFen对象  取名 f3

        //分别调用三个类的 check方法

        
        /********** End **********/    
    }
}

/********** Begin **********/
//WuMingFen 类实现部分


/********** End **********/    

输入格式:

输入面码、粉的份量、是否带汤。

输出格式:

面码:xxxx,粉的份量:xx两,是否带汤:xxxx
面码:xxxx,粉的份量:xx两,是否带汤:false
面码:酸辣,粉的份量:2两,是否带汤:true

输入样例:

牛肉 3 true

输出样例:

面码:牛肉,粉的份量:3两,是否带汤:true
面码:牛肉,粉的份量:3两,是否带汤:false
面码:酸辣,粉的份量:2两,是否带汤:true

答案:

import java.util.Scanner;
class WuMingFen{
    String theMa;
    int quantity;
    boolean likeSoup;

    public WuMingFen(String n,int q,boolean l){
        theMa=n;
        quantity=q;
        likeSoup=l;
    }

    public WuMingFen(String n,int q){
        theMa=n;
        quantity=q;
    }
     public WuMingFen(){
         theMa="酸辣";
         quantity=2;
         likeSoup=true;
     }

    public void check(){
        System.out.println("面码:"+theMa+",粉的份量:"+quantity+"两,是否带汤:"+likeSoup);
    }
}
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String theMa = sc.next();
        int quantity = sc.nextInt();
        boolean likeSoup = sc.nextBoolean();
        WuMingFen f1 = new WuMingFen(theMa,quantity,likeSoup);
        WuMingFen f2 = new WuMingFen(theMa,quantity);
        WuMingFen f3 = new WuMingFen();
        //分别调用三个类的 check方法
        f1.check();
        f2.check();
        f3.check();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值