Java实验5 -- 银行计算利息

前言

  • 时间:2020.5.26
  • 备注:再补一波。。

题目

Java实验5 -- 银行计算利息_第1张图片

实现思路

错误1:
第二题看运行结果的例子,不太懂测试类里应该是怎么操作的。
错误分析:
询问老师之后明白,该题不涉及上转型对象。
解决方案:
直接设置两个对象,共同参数就分别赋值一份。
错误2:
重写过的year再在子类get set会报错,但重写过的rate再在子类get set没有报错。不知道重写过的成员变量还是否需要get set。
错误分析:
这个问题询问了老师,豁然开朗。不是方法重载,就是方法重写,返回类型不一样,就出现语法错误。父类方法是 int A(); 子类想写个重载的方法 double A(); 是做不到的。通常抽象类都是只有方法,父类最好不要有set和get方法。
解决方案:
把get和set都放在了子类中,就不会产生冲突了。
错误3:
不知道“main里的8零236”在测试类中应该通过super或者其他什么方式输出。
错误分析:
查询了网上的参考代码,是将“XX元在XX银行XX天的利息:XX元”这一段输出放在了各个银行类的内部。
解决方案:
将“XX元在XX银行XX天的利息:XX元”这一段输出放在各个银行类内部。

实现代码

1.	Main.java
package exp_05.task02;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        ConstructionBank bank1 = new ConstructionBank();
        BankOfDalian bank2 = new BankOfDalian();
        /* 输入数据 */
        System.out.print("存款金额(元):");
        bank1.savedMoney = scan.nextInt();
        bank2.savedMoney = bank1.savedMoney;
        System.out.print("建设银行存款利率:");
        bank1.rate = scan.nextDouble();
        System.out.print("存款时长:");
        bank1.year = scan.nextDouble();
        bank2.year = bank1.year;
        /* 计算及结果 */
        bank1.computerInterest();
        System.out.print("大连银行存款利率:");
        bank2.rate = scan.nextDouble();
        bank2.computerInterest();
        System.out.println("两家银行利息相差:" + Math.abs(bank1.interest - bank2.interest) + "元");
    }
}
2.	Bank.java
package exp_05.task02;
/**
 * @Author Hyidol
 * @Data 2020-05-26 17:15
 * @Title 大连银行
 */
public class Bank {
    int year = 0;
    int savedMoney = 0;
    double interest = 0;
    double rate = 0.35;

    double computerInterest() {
        interest=year * rate * savedMoney;
        return interest;
    }
}
3.	BankOfDalian.java
package exp_05.task02;
public class BankOfDalian extends Bank{
    double year;
    double computerInterest() {
        super.year = (int)year;
        super.computerInterest();
        int day = (int)((year -super.year) * 1000);  //这个1000是不得已,找不到合适的方法将小数点后面数字转为整数,自己写方法又需要考虑很多,比较麻烦
        interest += day * rate / 365 * savedMoney;
        System.out.println(savedMoney + "元在大连银行" + super.year + "零" + day + "天的利息:" + interest + "元" );
        return interest;
    }
    public double getYear() {
        return year;
    }
    public void setYear(double year) {
        this.year = year;
    }
}
4.	ConstructionBank.java
package exp_05.task02;
public class ConstructionBank extends Bank {
    double year;
    double rate;

    double computerInterest() {
        super.year = (int)year;
        super.rate = rate;
        super.computerInterest();
        int day = (int)((year -super.year) * 1000);  //这个1000是不得已,找不到合适的方法将小数点后面数字转为整数,自己写方法又需要考虑很多,比较麻烦
        interest += day * rate / 365 * savedMoney;
        System.out.println(savedMoney + "元在建设银行" + super.year + "零" + day + "天的利息:" + interest + "元" );
        return interest;
    }

    public double getYear() {
        return year;
    }

    public void setYear(double year) {
        this.year = year;
    }

    public double getRate() {
        return rate;
    }

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

实现结果图

Java实验5 -- 银行计算利息_第2张图片

你可能感兴趣的:(作业打卡)