我被困在创建一个帐户的对象中,我不知道问题出在哪里。我的输出只显示最近输入的值。我想看看我创建的打印细节(特别是不同的ID),我不知道如何去做。通过for循环创建对象时遇到困难
请检查我的代码,因为我认为我的循环有一个bug,有点显示不需要显示的显示消息。
BankSystem.java:
import java.io.*;
import java.util.Scanner;
public class BankSystem {
public static void main(String[] args) throws IOException {
Scanner in = new Scanner(System.in);
BankAccount account[] = new BankAccount[5];
BankClient client[] = new BankClient[5];
BankSystem myBankSystem = new BankSystem();
String MainMenu;
do {
System.out.println("");
System.out.println("------PLP BANK SYSTEM------");
System.out.println("Main Menu: ");
System.out.println("[A]ccount Management");
System.out.println("[C]lient Management");
System.out.println("[Q]uit");
System.out.println("");
System.out.print("Please select letter: ");
MainMenu = in.nextLine();
switch (MainMenu.toLowerCase()) {
case "a":
System.out.println("");
System.out.println("------PLP BANK SYSTEM------");
System.out.println("Account Management:");
System.out.println("[N]ew Account");
System.out.println("[A]Apply Interest to All Accounts");
System.out.println("[L]ist All Accounts");
System.out.println("[F]ind an Account");
System.out.println("[D]eposit to an Account");
System.out.println("[W]ithdraw from an Account");
System.out.println("[R]eturn to Main Menu");
System.out.println("");
System.out.print("Please select letter: ");
String AccountManagement = in.nextLine();
switch (AccountManagement.toLowerCase()) {
case "n": //NEW ACCOUNT
System.out.print("Please input your desired ID number: ");
int id = in.nextInt();
System.out.print("Please input your desired Balance: ");
double balance = in.nextDouble();
System.out.print("Please input your desired Interest Rate: ");
double interestRate = in.nextDouble();
// IS THE PROBLEM IS HERE ON MY LOOP?
for (int i=0; i<account.length; i++) {
account[i] = new BankAccount(id, balance, interestRate);
}
break;
case "a": //APPLY INTEREST TO ALL ACCOUNTS
System.out.println("For all accounts, compute and compound:");
System.out.println("[M]onthly");
System.out.println("[Q]uarterly");
System.out.println("[A]nnually");
System.out.println("[C]ancel");
break;
case "l": //LIST ID NUMBERS OF ALL ACCOUNTS
System.out.println("List of all Accounts: ");
account[1].printDetails(); // OR THE PROBLEM IS HERE?
account[2].printDetails();
break;
case "f": //FIND ACCOUNT
System.out.println("Enter ID number: ");
break;
case "d": //DEPOSIT
System.out.println("Enter ID number: ");
System.out.println("Enter Deposit amount: ");
break;
case "w": //WITHDRAW
System.out.println("Enter ID number: ");
System.out.println("Enter Withdraw amount: ");
break;
case "r": // RETURN
break;
}
case "c":
System.out.println("");
System.out.println("------PLP BANK SYSTEM------");
System.out.println("Client Management:");
System.out.println("[N]ew Client");
System.out.println("[L]List All Clients");
System.out.println("[F]ind a Client");
System.out.println("[R]eturn to Main Menu");
System.out.println("");
System.out.print("Please select letter: ");
String ClientManagement = in.nextLine();
switch (ClientManagement.toLowerCase()) {
case "n": //NEW CLIENT
System.out.println("Enter ID number: ");
System.out.println("Please input your Name: ");
System.out.println("Please input your account ID number: ");
break;
case "l": //LIST ALL CLIENT
break;
case "f": //FIND A CLIENT
System.out.println("Enter ID number: ");
break;
case "r":
break;
default:
System.out.println("Invalid entry, Please try again!");
break;
}
default:
System.out.println("Invalid entry, Please try again!");
}
} while (!MainMenu.equals("q"));
System.out.println("Thank you for using my program!");
}
}
BankAccount.java:
public class BankAccount {
private double balance;
private double interestRate;
private int id;
public BankAccount (int id, double initialDeposit, double initialIntRate){
//Constructor
this.id=id;
this.balance=initialDeposit;
this.interestRate=initialIntRate;
}
public double getBalance(){
return balance;
}
public double getInterestRate(){
return interestRate;
}
public int getIDNumber(){
return id;
}
public void printDetails() {
System.out.println("ID Number is: " +id);
System.out.println("Current balance is: "+balance);
System.out.println("Interest rate is: "+interestRate+"%");
}
public double computeMonthlyInterest(){
interestRate=balance*interestRate;
return interestRate;
}
public void applyMonthlyInterest(){
this.balance=balance+interestRate;
}
public void applyQuarterlyInterest(){
this.balance=balance+(interestRate*3);
}
public void applyAnnualInterest(){
this.balance=balance+(interestRate*12);
}
public void deposit(double amount){
this.balance += amount;
}
public boolean withdraw (double amount) {
if (amount>balance) {
System.out.println("Withdraw amount is more than balance, Please try again.");
return false;
}
else
{
this.balance -= amount;
return true;
}
}
}
请缩进您的代码。目前几乎不可能阅读。并且请更加珍贵地描述你的问题(期望的行为等等) – Leistungsabfall 2014-10-02 17:20:03
你的'switch'结构在'case'语句之间没有'break',并且有一个'while'缺少一个主体(在第一个代码中snippet) – msrd0 2014-10-02 17:23:30
缩小问题范围。当然,大部分代码与问题无关。正如其他人所说,请花时间格式化并缩进您的代码。 – tnw 2014-10-02 17:24:48