我几乎完成了一个 Java 程序,但我正在编译。这个程序是一个关于继承的演示,有 4 个类(包括一个驱动程序),但我在上述驱动程序上遇到了 4 个错误。我在使程序通用(允许用户输入)方面也存在问题,因为我试图读取的数据是不同类型的。我想我需要在某个地方使用 valueOf,但我们在课堂上还没有走那么远。我为篇幅道歉。
以下是规格:
定义一个名为 Payment 的类,该类包含一个 double 类型的实例变量,该变量存储支付金额以及适当的访问器和修改器方法。还要创建一个名为 paymentDetails 的方法,它输出一个英文句子来描述付款金额。接下来,定义一个派生自 Payment 的名为 CashPayment 的类。
此类应重新定义 paymentDetails 方法以指示付款是现金。包括适当的构造函数。定义一个派生自 Payment 的名为 CreditCardPayment 的类。此类应包含卡上姓名、到期日期和信用卡号的实例变量。
包括适当的构造函数。最后,重新定义 paymentDetails 方法以在打印输出中包含所有信用卡信息。创建 main 方法,该方法创建至少两个 CashPayment 和两个具有不同值的 CreditCardPayment 对象,并为每个对象调用 paymentDetails。一定要使程序通用,以便用户可以输入数据!!!
这是错误消息之一:
C:\Program Files\Java\jdk1.8.0_60\bin\ghp3driver.java:21:错误:不兼容的类型:字符串无法转换为付款
这是代码...
import java.util.*; //new file/class
class ghp3driver {
public static void main(String[] args) {
Scanner user_input = new Scanner(System.in);
Payment cash1 = user_input.next();
Payment cash2 = user_input.next();
Payment credit1 =
user_input.next();
Payment credit2 =
user_input.next();
System.out.println("Cash 1 details:");
cash1.paymentDetails();
System.out.println();
System.out.println("Cash 2 details:");
cash2.paymentDetails();
System.out.println();
System.out.println("Credit 1 details:");
credit1.paymentDetails();
System.out.println();
System.out.println("Credit 2 details:");
credit2.paymentDetails();
System.out.println();
}
}
import java.util.*; //NEW FILE/CLASS
public class Payment {
private double amount;
public Payment() { //constructor
amount = 0.0;
}
public Payment(double paymentAmount) { //initializes payment amount
amount = paymentAmount;
}
public void setPayment(double paymentAmount) {
amount = paymentAmount;
}
public double getPayment() {
return amount;
}
public void paymentDetails() {
System.out.println("The payment amount is " + amount);
}
}
class CreditCardPayment extends Payment {
private String date, name, ccn;
public CreditCardPayment(double amount, String date, String name, String ccn) {
super(amount);
this.date = date;
this.name = name;
this.ccn = ccn;
}
public void paymentDetails() { //printing
System.out.println("Name on card: " + this.getName());
System.out.println("Expiration date: " + this.getDate());
System.out.println("Credit card number: " + this.getCcn());
System.out.println("The payment by credit card amount is " + getPayment());
}
public String getCcn() {
return ccn;
}
public void setCcn(String ccn) {
this.ccn = ccn;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class CashPayment extends Payment {
public CashPayment(double paymentAmount) {
super(paymentAmount);
}
public void paymentDetails() {
System.out.println("The payment cash amount is " + this.getPayment());
}
}