Java程序设计实验2---sdust

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

Accepted Code

class Car {
    String status;
    int speed;

    public Car() {
        status = "off";
        speed = 0;
    }

    public void start() {
        if (status.equals("off")) status = "on";
    }

    public void stop() {
        if (speed == 0) status = "off";
    }

    public void speedUp() {
        if (status.equals("on")) {
            speed += 10;
            if (speed >= 160) speed = 160;
        }
    }

    public void slowDown() {
        if (status.equals("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

Accepted Code

class Point {
    double x;
    double y;

    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

}

class Line {
    Point p1;
    Point p2;
    double length;

    public Line(Point p1, Point p2) {
        this.p1 = p1;
        this.p2 = p2;
        length = 0.0;
    }

    public double getLength() {
        double tmp = Math.pow(p1.y - p2.y, 2) + Math.pow(p1.x - p2.x, 2);
        length = Math.pow(tmp, 0.5);
        return length;
    }

}

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

Accepted Code

class Student {
    String name;
    int sex;
    int age;
    static int maleCount = 0;
    static int femaleCount = 0;

    public Student(String name, int sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        if (this.sex == 1) {
            maleCount++;
        } else if (this.sex == 0) {
            femaleCount++;
        }
    }

    public static int getMaleCount() {
        return maleCount;
    }
    
    public static int getFemaleCount() {
        return femaleCount;
    }

}

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

Accepted Code

import java.lang.*;
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        BankAccount ba = new BankAccount(sc.nextInt());
        int n = sc.nextInt();
        for(int i=0;i<n;i++){
            int a = sc.nextInt();
            switch (a) {
                case 1:
                    ba.deposit(sc.nextInt());
                    System.out.println(ba.getBlance());
                    break;

                case 2:
                    ba.withdraw(sc.nextInt());
                    System.out.println(ba.getBlance());
                    break;
            }
        }
    }
}

class BankAccount {
    int balance; //账户余额

    public BankAccount() {
        balance = 0;
    }

    public BankAccount(int balance) {
        this.balance = balance;
    }

    public int getBlance() {
        return balance;
    }

    public boolean withdraw(int amount) {
        if (balance >= amount) {
            balance -= amount;
            return true;
        }
        return false;
    }

    public void deposit(int amount) {
        balance += amount;
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值