【发布时间】:2021-06-29 13:23:20
【问题描述】:
我正在创建一个基于菜单的程序来生成发票,这张发票是月租的。
当用户选择某个选项时,系统会提示他们输入几个用户输入,这些输入将存储在变量中(所有双精度数和 1 个字符串)。这些用户输入被存储在一个 ArrayList 中。
我创建了一个类 BudgetInvoice,其中声明了变量,我有合适的 getter 和 setter 以及构造函数。
我创建了一个单独的类 InvoicerHub ,其中还声明了 ArrayList 类型,我将在其中创建函数来收集用户输入并存储在 arrayList 中,以及在 ArrayList 中显示这些元素。
在我的主课中,我正在测试 2 个函数(generateInvoice 和 showInvoice),我将在其中收集用户输入并显示另一个函数。
我能够收集用户输入没有问题,但是当我立即调用 showInvoice 函数时,没有任何显示并且程序终止。
下面我将展示有问题的类和函数以及我的主要类,以便了解这里可能出现的问题。
感谢您的帮助!
import java.util.Scanner;
public class BudgetInvoice {
protected double monthlyRent;
protected double waterBill;
protected double energyBill;
protected double carRent;
protected double internetRent;
protected String invoiceID;
Scanner myScan = new Scanner(System.in);
public double getMonthlyRent() {
return monthlyRent;
}
public void setMonthlyRent(double monthlyRent) {
this.monthlyRent = monthlyRent;
}
public double getWaterBill() {
return waterBill;
}
public void setWaterBill(double waterBill) {
this.waterBill = waterBill;
}
public double getEnergyBill() {
return energyBill;
}
public void setEnergyBill(double energyBill) {
this.energyBill = energyBill;
}
public double getCarRent() {
return carRent;
}
public void setCarRent(double carRent) {
this.carRent = carRent;
}
public double getInternetRent() {
return internetRent;
}
public void setInternetRent(double internetRent) {
this.internetRent = internetRent;
}
public String getInvoiceID() {
return invoiceID;
}
public void setInvoiceID(String invoiceID) {
this.invoiceID = invoiceID;
}
public BudgetInvoice (double monthlyRent, double waterBill, double energyBill , double carRent, double internetRent, String invoiceID)
{
this.monthlyRent = monthlyRent;
this.waterBill = waterBill;
this.energyBill = energyBill;
this.carRent = carRent;
this.internetRent = internetRent;
this.invoiceID = invoiceID;
}
public BudgetInvoice() {
// TODO Auto-generated constructor stub
}
public String toString() {
return "BudgetInvoice [monthlyRent=" + monthlyRent + ", waterBill=" + waterBill + ", energyBill=" + energyBill
+ ", carRent=" + carRent + ", internetRent=" + internetRent + ", invoiceID=" + invoiceID + ", myScan="
+ myScan + "]";
}
}
import java.util.ArrayList;
public class InvoicerHub extends BudgetInvoice{
protected ArrayList <BudgetInvoice> InvoiceHub ;
public InvoicerHub()
{
InvoiceHub = new ArrayList<BudgetInvoice>();
}
public InvoicerHub(ArrayList<BudgetInvoice> InvoiceHub)
{
super();
this.InvoiceHub = InvoiceHub;
}
public void generateInvoice (BudgetInvoice b )
{
System.out.println("Enter your Monthly Rent");
double rent = myScan.nextDouble();
System.out.println("Enter Your monthly Water bill");
double waterBill = myScan.nextDouble();
System.out.println("Enter your Energy Costs");
double energyBill = myScan.nextDouble();
System.out.println("Enter your monthly car payment");
double carPayment = myScan.nextDouble();
System.out.println("Enter your monthly Internet costs");
double internetBill = myScan.nextDouble();
myScan.nextLine(); // to catch the enter input
System.out.println("Enter your desired Invoice ID");
String invoiceID = myScan.nextLine();
BudgetInvoice B = new BudgetInvoice ( rent , waterBill, energyBill, carPayment, internetBill, invoiceID);
InvoiceHub.add(B);
}
public String toString() {
return "InvoicerHub [InvoiceHub=" + InvoiceHub + "]";
}
public String showInvoice()
{
String temp = "Here is your Invoice";
for(BudgetInvoice p : InvoiceHub)
{
temp += p.toString();
}
return temp;
}
}
import java.util.ArrayList;
public class Tester {
public static void main(String[] args) {
InvoicerHub myInvoice = new InvoicerHub();
myInvoice.generateInvoice(myInvoice);
myInvoice.showInvoice();
}
}
【问题讨论】:
标签: java inheritance arraylist tostring