2016-02-24 53 views
0
public void runMenu() { 
     int x = 1; 
     Scanner Option = new Scanner(System.in); 
     int Choice = 0; 

     do { 
      try { 
       System.out.println("Choose Option"); 
       System.out.println(""); 
       System.out.println("1: Create Account"); 
       System.out.println("2: Check Account"); 
       System.out.println("3: Take Action"); 
       System.out.println("4: Exit"); 

       System.out.println("Please choose"); 
       Choice = Option.nextInt(); 

       switch (Choice) //used switch statement instead of If else because more effective 
       { 
        case 1: 
         CreateAccount(); 
         break; //breaks iteration 
        case 2: 
         selectAccount(); 
         break; 
        case 3: 
         break; 
       } 
      } catch (Exception e) { 
       System.out.println("Cant do that"); 
      } 
     } while (Choice < 4); 
     System.out.println("Bye"); 
    } 

異常處理不起作用,例如,如果我輸入5之類的範圍,應該說「不能做那個」。我是否應該輸入if語句來定義條件,如果有的話我該怎麼做呢?現在它只是輸入「再見」,如果我輸入錯誤的密鑰。如何獲取要顯示的錯誤

+0

輸入您的範圍之外不會引起異常。異常是由處理時導致問題的輸入觸發的。這可能會幫助您http://www.tutorialspoint.com/java/java_exceptions.htm – Ceelos

+0

您的代碼中沒有任何部分會告訴它在輸入時引發異常是意想不到的價值。也許使用交換機的'default:'情況。 (首先在這裏使用例外是否正確是有爭議的) –

+0

'break'適用於交換機;不是循環。 –

回答

1

你的問題是由於你的循環,而Choice < 4

您應該將循環更改爲while(true);,然後交換機機箱內,創造出退出使用System.exit(0)

然後包括一個默認的程序,它會通知用戶,他們輸入的值無效的情況下,4

public void runMenu() { 

    int x = 1; 
    Scanner Option = new Scanner (System.in); 
    int Choice = 0; 

    do{ 
    try{ 



      System.out.println("Choose Option"); 
      System.out.println(""); 
      System.out.println("1: Create Account"); 
      System.out.println("2: Check Account"); 
      System.out.println("3: Take Action"); 
      System.out.println("4: Exit"); 



     System.out.println("Please choose"); 
     Choice= Option.nextInt(); 




    switch (Choice) //used switch statement instead of If else because more effective 
    { 
    case 1: 

     CreateAccount(); 
     break; //breaks iteration 




    case 2: 

     selectAccount(); 


     break; 

    case 3: 


     break; 
    case 4: 
     System.out.println("Bye"); 
     System.exit(0); 
    default: 
     System.out.println("Invalid Entry"); 
     break; 


} 
} 



catch (Exception e){ 
    System.out.println("Cant do that"); 
} 
} while (true); 

} 
0

目前你並沒有拋出任何異常。

如果你想拋出異常。 請創建默認情況下,並拋出異常從中

製造默認情況下,如下

default: 
    System.out.println("Invalid Entry"); 
    throw new Exception(); 
+0

['Scanner'中的'.nextInt()'可以引發大量例外](http://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html #nextInt--)。他們都沒有檢查啓動。 – fge

+0

@Edafy - 解決方案是否適合您? –

相關問題