2016-11-03 4 views
-4

私は銀行口座のクラスで働いていますが、クラスを取得できましたが、私の問題はテスターです。私はこれを実行するとアカウントを終了した後に「無効なアカウント、再試行...」と表示されます

package Banker; 
import java.util.Scanner; 
public class BrinAccount{ 
    public static void main(String[]args){ 
     BankAccount savings = new BankAccount(); 
     Scanner scan = new Scanner(System.in); 
     BankAccount checking = new BankAccount(); 
     boolean isdoneouter = false; 
     boolean isdoneinner = false; 

     while(!isdoneouter){ 
      System.out.print("Choose Account: "); 
      String account = scan.nextLine().toLowerCase(); 
      if (account.equals("savings")){ 
       while(!isdoneinner){ 
        System.out.print("Check Balance (1), Deposit (2), Withdrawal (3), or Exit (4): "); 
        int dowhat = scan.nextInt(); 
        if (dowhat==1){ 
         System.out.println(savings.getBalance()); 
        } 
        else if (dowhat==2){ 
         System.out.print("Enter amount to deposit: "); 
         double n = scan.nextDouble(); 
         savings.deposit(n); 
        } 
        else if (dowhat==3){ 
         System.out.print("Enter amount to withdrawal: "); 
         double n = scan.nextDouble(); 
         savings.widthdrawal(n); 
        } 
        else if (dowhat==4){ 
         isdoneinner=true; 
         break; 
        } 
        else{ 
         System.out.println("Invalid input. Try again..."); 

        } 
       } 
      } 
      else if (account.equals("checking")){ 
       while(!isdoneinner){ 
        System.out.print("Check Balance (1), Deposit (2), Withdrawal (3), or Exit (4): "); 
        int dowhat = scan.nextInt(); 
        if (dowhat==1){ 
         System.out.println(checking.getBalance()); 
        } 
        else if (dowhat==2){ 
         System.out.print("Enter amount to deposit: "); 
         double n = scan.nextDouble(); 
         checking.deposit(n); 
        } 
        else if (dowhat==3){ 
         System.out.print("Enter amount to withdrawal: "); 
         double n = scan.nextDouble(); 
         checking.widthdrawal(n); 
        } 
        else if (dowhat==4){ 
         isdoneinner=true; 
        } 
        else{ 
         System.out.println("Invalid input. Try again..."); 
        } 
       } 
      } 
      else if(account.equals("exit")){ 
       System.out.println("Have a good day!"); 
       isdoneouter = true; 
      } 
      else{ 
       System.out.println("Invalid Account. Try again..."); 
      } 
     } 
    } 
} 

、私はアカウント「貯金」を選択することができ、あるいはまったく問題に「チェック」が、私は彼ら(出口)の中から4を実行したときに、それが外に返します。ここでは、テスターのコードですwhileループは期待どおりにループしますが、「無効なアカウント、再試行...」と表示されます。私はコードを見てきましたが、うまくいくはずです。ループに問題があるようです。ルーキーミスを許してください。どんな助けでも大歓迎です。

クラスが必要な場合はお知らせください。質問を更新します。

+0

ヒント:あなたの名前を単独で指定すると、コードを5倍も読みにくくすることができます。変数名はjavaのcamelCaseに移動する必要があります。 isDoneOuterは、例えばisdoneouterよりもはるかに読みやすくなります。それでは:そのようなカスケードされた/ elsesは基本的に...理想的ではありません。彼らはあなたの問題を正確に導くので、あなたのコードが何をしているかを知ることはできません。あなたはそれを読んで理解することは不可能に近い方法でそれを書いたからです。 – GhostCat

+0

@ cricket_007編集して明確にしました。 –

+0

@GhostCat次回は編集します。ありがとうございます。 –

答えて

0

scan.nextLine()をscan.next()に変更することで問題は解決しました。

関連する問題