Java复习6(PTA)

重写父类方法equals

分数 10

全屏浏览

切换布局

作者 sunyu

单位 西南石油大学

在类Point中重写Object类的equals方法。使Point对象x和y坐标相同时判定为同一对象。

裁判测试程序样例:

import java.util.Scanner;
class Point {
private int xPos, yPos;
public Point(int x, int y) {
    xPos = x;
    yPos = y;
    }
@Override
/* 请在这里填写答案 */
}
public class Main {
    public static void main(String[] args) {
       Scanner sc = new Scanner(System.in);
       Object p1 = new Point(sc.nextInt(),sc.nextInt());
       Object p2 = new Point(sc.nextInt(),sc.nextInt());
       System.out.println(p1.equals(p2));
      sc.close();
}
}

输入样例:

10 20
10 20

输出样例:

true

代码长度限制

16 KB

时间限制

4000 ms

内存限制

64 MB

public boolean equals(Object obj) {
        Point point = (Point) obj;
        return this.xPos == point.xPos && this.yPos == point.yPos;
    }

设计Worker类及其子类

分数 15

全屏浏览

切换布局

作者 殷伟凤

单位 浙江传媒学院

设计一个Worker类,有以下方法:
(1)构造方法:带两个输入参数:工人的姓名和小时工资。
(2)小时工资的get/set方法
(3)pay()方法:带一个工作时长输入参数,输出:"Not Implemented"。
接下来设计Worker的子类:HourlyWorker和SalariedWorker。两个子类都重写继承的方法pay()来计算工人的周薪。计时工按实际工时支付每小时工资,超过40小时的超出部分为双倍工资。计薪工人的工资是40小时的工资,不管工作时间是多少。因为与工作时长无关,故SalariedWorker的方法pay()可以不带参数调用。

###类框架定义:

设计的类如下框架所示,完成后将该三类提交。
class Worker {
    ……
}

class HourlyWorker extends Worker {
        ……
}
class SalariedWorker extends Worker {
        ……
}

裁判测试程序样例:

import  java.util.Scanner;

//Main测试类
public class Main{
  public static void main(String[] args) {
      Scanner input = new Scanner(System.in);
       Worker w1 = new Worker("Joe",15);
      w1.pay(35);
      SalariedWorker w2 = new SalariedWorker("Sue",14.5);
      w2.pay();
      w2.pay(60);
      HourlyWorker w3 = new HourlyWorker("Dana", 20);
      w3.pay(25);
      w3.setRate(35);   
            int h = input.nextInt();     # 输入小时工的工作时长
      w3.pay(h);      
  }
}

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

输入样例:

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

 25
 

输出样例:

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

Not Implemented
580.0
580.0
500.0
875.0

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

class Worker {
    String name;
    double hourlyRate;

    public Worker(String name, double hourlyRate) {
        this.name = name;
        this.hourlyRate = hourlyRate;
    }

    public double getHourlyRate() {
        return hourlyRate;
    }

    public void setRate(double hourlyRate) {
        this.hourlyRate = hourlyRate;
    }

    public void pay() {
        System.out.println("Not Implemented");
    }

    public void pay(double hourlyRate) {
        System.out.println("Not Implemented");
    }
}

class HourlyWorker extends Worker {

    public HourlyWorker(String name, double hourlyRate) {
        super(name, hourlyRate);
    }

    public void pay(double hour) {
        if (hour > 40) {
            System.out.println(getHourlyRate() * 40 + 2 * getHourlyRate() * (hour - 40));
        } else {
            System.out.println(getHourlyRate() * hour);
        }
    }

}

class SalariedWorker extends Worker {

    public SalariedWorker(String name, double hourlyRate) {
        super(name, hourlyRate);
    }

    public void pay() {
        System.out.println(40 * getHourlyRate());
    }

    public void pay(double hourlyRate) {
        System.out.println(40 * getHourlyRate());
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值