【发布时间】:2022-01-07 19:11:28
【问题描述】:
所以我正在编写这个程序,它旨在为 5 个人填写一组包含 3 种类型信息的账单。主要问题是当我运行程序时,在输入第一个人的信息后它会中断。 (请记住 addBill 是不同类中的方法)。
代码在下面。我该如何解决? 谢谢。
//代码——驱动类
public static void main(String[] args){
Scanner input = new Scanner(System.in);
// Taking Doctor's Name And Capacity.
System.out.println("Enter the doctor's name: ");
String doctorName = input.nextLine();
System.out.println("Enter the capacity: ");
int capacity = input.nextInt();
// Creating A billBook Object.
// billBook information = new billBook(doctorName, capacity);
billBook[] bills = new billBook[capacity];
// Asking User To Enter Patient's Information.
for(int i = 0; i < capacity; i++){
System.out.println();
System.out.println("Bill " + (i+1));
System.out.println("Enter the invoice number, patient's name, and visit date: ");
String invoiceNumber = input.nextLine();
String name = input.nextLine();
input.nextLine();
String visitDate = input.nextLine();
input.nextLine();
// bills[i].addBill(input.nextLine(), input.nextLine(), input.nextLine());
bills[i].addBill(invoiceNumber, name, visitDate);
}
}
//代码——billBook类
// Declaring Instances.
bill[] bills;
String Doctor;
// The Constructor Methods.
billBook(){}
billBook(String Doctor, int capacity){
this.Doctor = Doctor;
bill[] bills = new bill[capacity];
}
// The GET Methods.
public String getDoctor(){
return Doctor;
}
public bill[] getBills(){
return bills;
}
// The SET Methods.
public void setDoctor(String Doctor){
this.Doctor = Doctor;
}
// The Add Bill Method.
public void addBill(String invoiceNumber, String patientName, String visitDate){
for(int i = 0; i < bills.length; i++){
bills[i] = new bill(invoiceNumber, patientName, visitDate);
}
}
// The Pay Bill Method.
public int payBill(String invoiceNumber){
for (int i = 0; i < bills.length; i++){
if(invoiceNumber.equals(bills[i].getInvoiceNumber())){
bills[i].setPaid(true);
System.out.println("Bill Is Paid.");
return 1;
}
else{
System.out.println("The Bill Is Not Found.");
}
}
return -1;
}
//代码--票据类
// Declaring instances.
private String invoiceNumber;
private String visitDate;
private String patientName;
private boolean paid;
// The Constructor Methods.
bill(){}
bill(String invoiceNumber, String visitDate, String patientName){
this.invoiceNumber = invoiceNumber;
this.visitDate = visitDate;
this.patientName = patientName;
paid = false;
}
// The GET Methods.
public String getInvoiceNumber(){
return invoiceNumber;
}
public String getVisitDate(){
return visitDate;
}
public String getPatientName() {
return patientName;
}
public boolean isPaid() {
return paid;
}
// The SET Methods.
public void setInvoiceNumber(String invoiceNumber) {
this.invoiceNumber = invoiceNumber;
}
public void setPatientName(String patientName) {
this.patientName = patientName;
}
public void setVisitDate(String visitDate) {
this.visitDate = visitDate;
}
public void setPaid(boolean paid) {
this.paid = paid;
}
// The Printing Method.
public void printInvoice(){
if(isPaid()){
System.out.println("Invoice Number: " + getInvoiceNumber() +
"\nVisit Date: " + getVisitDate() +
"\nPatient's Name: " + getPatientName() +
"\nThe bill is paid.");
}
else{
System.out.println("Invoice Number: " + getInvoiceNumber() +
"\nVisit Date: " + getVisitDate() +
"\nPatient's Name: " + getPatientName() +
"\nThe bill is not paid.");
}
}
【问题讨论】: