我在使用以下第1行到第4行添加新行时遇到问题,作为InvoiceLine
类的实例添加到我的Invoice
类中。
实例变量:
addLine
是一种采用以下四个输入参数的方法:商品编号,商品描述,商品价格和数量。
只有当发票少于四行时,该方法才会在发票中添加一行。如果发票已有四行,则此方法应打印错误消息。
如何才能使其正常工作?我将不胜感激任何帮助。
发票类:
public class Invoice {
// Instance Variables
private String customerName;
private int numItems;
private InvoiceLine line1;
private InvoiceLine line2;
private InvoiceLine line3;
private InvoiceLine line4;
// Contructors
public Invoice(){}
public Invoice(String customerNam){
customerName = customerNam;
}
//Getters
public String getCustomerName(){
return customerName;
}
//Setters
private void setCustomerName(String customerNam){
customerName = customerNam;
}
public void addLine(int itemNum, String Description, double itemPrice, int quantity){
if (numItems <= 4) {
numItems += line1;
if (numItems <= 4)
numItems += line2;
if (numItems <= 4)
numItems += line3;
if (numItems <= 4)
numItems += line4;
}
if (numItems == 4){
System.out.print("Error");
}
}
public double getInvoiceTotal(){
numItems *= numItems;
return numItems;
}
public String toString(){
String invoiceOutput = "";
invoiceOutput += (customerName + " brought "+ numItems);
return invoiceOutput;
}
}
InvoiceLine类:
public class InvoiceLine {
//Instance Variables
private Item itemSold;
private int quantity;
public double total = 0;
// Constructors
public InvoiceLine(){}
public InvoiceLine(Item itemSold, int quantity){
this.itemSold = itemSold;
this.quantity = quantity;
}
public InvoiceLine(int itemNum, String itemDescription, double itemPrice, int quantity){
this.itemSold = new Item(itemNum, itemDescription, itemPrice);
this.quantity = quantity;
}
//Getters
public Item getItemSold() {
return itemSold;
}
public int getQuantity(){
return quantity;
}
//Setters
private void setItemSold(Item itemSold){
this.itemSold = itemSold;
}
private void setQuantity(int quantity){
this.quantity = quantity;
}
// Methods
public double getLineTotal(double total){
total = (quantity * itemSold.getItemPrice());
return total;
}
public String toString(){
String invoiceLine = "";
invoiceLine = (itemSold + " brought "+ quantity + ", which the total cost is "+ total);
return invoiceLine;
}
}
答案 0 :(得分:1)
您似乎希望重新使用addLine
方法。根据您为此方法提供的描述(我假设是来自您的分配),听起来这个方法应该为InvoiceLine
设置一个Invoice
实例变量。我不想为你编写解决方案,因为这是一项任务,所以关键是要从中学习!但是这里有一些关注重点的提示:
Invoice
类中的实例变量类型。你正试图&#34;添加&#34;这些是numItems
变量,其类型为int
。这不会很好用!numItems
方法中多次检查addLines
值。一旦你检查它并看到它少于4,你知道你应该有可用的行添加!InvoiceLine
。看一下那个类的构造函数。您应该看到其中一个适用于addLine
方法中给出的参数。我要指出的一件重要事情虽然可以帮助您避免更多乏味的打嗝:您将要将numItems
变量初始化为0!您可以在构造函数中执行此操作,也可以在其声明中设置其默认值,如下所示:private int numItems = 0;
。
然后,记住你必须在方法中增加/减少此变量,无论何时添加或删除行,它都不是自动的。因此,您在addLine
方法中要做的最后一件事是numItems++
。但只有一切都成功添加! (换句话说,如果该方法实际上无法添加一行,因为已经有4行,那么您不想增加numItems
)。
希望有助于指明您正确的方向!我再试一次,看看你能走多远。如果您遇到其他具体问题而无法解决,请随时发表评论。