2016-08-01 3 views
1

私のコードでは少し問題があります。金額$ 30堆積した後、これを A-預金 Bの保存メニューを戻すために仮定される - D-リターンメインメニューを報告スキャナクラスの検証

どういうわけか、それは$ 30スキャンの代わりに、新しい入力を求め続ける - Cを撤回します。

私を助けてくれる人に感謝します。スキャナのチェックで

package Menu; 

import java.util.Scanner; 

enum Options { 
    A, B, C, D 
} 

public class Menu { 
    public Scanner sc = new Scanner(System.in); 

    public static void main(String[] args) { 
     Menu menu = new Menu(); 
     menu.mainMenu(); 
    } 

    public void mainMenu() { 
     String userChoice; 
     boolean quit = false; 

     do { 
      System.out.println("Bank Menu" + "\nA: Savings" + "\nB: Checking" 
        + "\nC: Exit"); 

      userChoice = sc.next().toUpperCase(); 

      switch (userChoice) { 
      case "A": 
       savingMenu savMen = new savingMenu(); 
       break; 
      case "B": 
       break; 
      case "C": 
       quit = true; 
       break; 
      default: 
       System.out.println("Wrong entry."); 
       break; 
      } 
      System.out.println(); 

     } while (!quit); 
     sc.close(); 
     System.exit(0); 
    } 
} 

package Menu; 

import Savings.Savings; 

public class savingMenu extends Menu { 
    Savings sav = new Savings(); 

    public savingMenu() { 
     String userChoice; 
     boolean quit = false; 

     /** 
     * A - Deposit B - Withdraw C - Report D - Return Menu 
     */ 
     do { 
      System.out.println("Savings Menu" + "\nA: Deposit " 
        + "\nB: Withdraw" + "\nC: Report" 
        + "\nD: Return to Bank Menu"); 

      userChoice = sc.nextLine().toUpperCase(); 
      switch (userChoice) { 
      case "A": 
       sav.makeDeposit();    
       break; 
      case "B": 
       sav.makeWithdraw(); 
       break; 
      case "C": 
       sav.doMonthlyReport(); 
      case "D": 
       quit = true; 
       super.mainMenu(); 
      default: 
       System.out.println("Wrong choice."); 
       break; 
      } 
      System.out.println(); 

     } while (!quit); 
    } 
} 
+0

あなたのコードは4つ以上のクラスです...あなたが疑わしい部分だけに投稿するコードを簡略化します....私たちはあなたをより速く助けることができます.... –

+0

私は2つのクラス(計算)を削除しました –

+0

出力は?のように見える?コマンドラインがどのように見えるか貼り付けることができますか? – Drgabble

答えて

0

hasNextLine()

+0

これをスイッチの前に追加すると、無限ループ。 'if(sc.hasNextLine()){ userChoice = sc.nextLine()。toUpperCase();' –

0

[OK]を、私はエラーを検出しましたか私はミス理解を言うべきで次の行があります。

投稿で削除したクラスの1つが実際に大混乱の原因となっていました。

public void validateDepositAmount() {  
    boolean isDoubleDigit = false; 

    System.out.println("How much would you like to deposit?"); 

    //try (Scanner sc = new Scanner(System.in)) { 
    Scanner sc = new Scanner(System.in); 

    do {        
      if (sc.hasNextDouble()) { 
       totalDeposit = sc.nextDouble(); 

       if(totalDeposit >= 0) { 
        isDoubleDigit = true; 
       } else { 
        System.out.println("Your input must higher than 0."); 
        sc.nextLine(); 
       }     
      } else { 
       System.out.println("Please put an amount."); 
       sc.nextLine();     
      } 
     } while (isDoubleDigit == false); 
    //} catch (Exception e) { 
     //e.printStackTrace(); 
    //} 
} 

私は基本的にリソースを試してみましたが、それはただループを続けていました。