我几乎完成了一个Java程序,但我正在编译一个障碍。 这个程序是继承的示范,有4个类(包括一个驱动程序),但是我在上述驱动程序上收到4个错误。由于我试图读取的数据具有不同的类型,因此我还有一个使程序通用(允许用户输入)的问题。我认为我需要在某个地方使用价值,但是我们的课没有那么远。我对这个长度表示歉意。Java继承演示 - 在用户输入和不兼容的类型
这里是规格:
定义一个名为 付款 是 包含存储 金额支付和适当的访问和mutator方法的类型 双 的实例变量类。 也创建一个名为 的方法 paymentDetails 输出英语句子来描述付款金额。 接下来,defi ne等级名为 CashPayment 即衍生自 支付。
此类应 重新定义 paymentDetails 方法,以表明支付现金。包含适当的 构造函数。 定义一个类 CreditCardPayment 从 派生支付 。 该类应包含卡上名称,到期日期和信用卡号的实例变量。
包括适当的构造函数。最后,重新定义 paymentDetails 方法在打印输出中包含所有 信用卡信息。 创建创建至少两个 CashPayment 和两个具有不同值 类:CreditCardPayment 对象并调用 paymentDetails 每个主要方法。 一定要使程序一般,以便用户可以输入数据!
以下是错误消息之一:
C:\Program Files\Java\jdk1.8.0_60\bin\ghp3driver.java:21: error: incompatible types: String cannot be converted to Payment
这里是代码...
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());
}
}
您认为_String无法转换为Payment_是什么意思? –
您认为_Payment cash1 = user_input.next(); _应该做什么?你为什么这么认为? –
那么,用户输入字符串不能转换为付款(双),我试图找到一种解决办法。至于付款cash1 = user_input.next():它将输入从键盘分配给cash1,这是稍后显示的值。 – csheroe