2017-09-04 70 views
0

我正在製作一個簡單的計算器程序,最初只需要一個關於加法,減法和除法的數字。 如果他們輸入的數字不是1,2或3,我想創建一個IOException,然後調用該方法以允許用戶再次詢問相同的問題。無法回撥我在其中的方法的名稱

也許我錯過了一些明顯的東西。任何幫助讚賞。謝謝。 ((假定掃描器和所有其它功能工作))

public static void mathsChoice() throws IOException{ System.out.println("'1' for Addition, '2' for Subtraction, '3' for Division"); int resChoice = scanner.nextInt(); if (resChoice == 1){ additionMethod(); }else if (resChoice == 2){ subtractionMethod(); } else if (resChoice == 3){ divisionMethod(); }else { throw new IOException("Not valid, try again."); mathsChoice(); } }

的 「mathsChoice();」 else子句中導致錯誤: 「可達代碼」

mathsChoice(); 
+0

*也許我失去了一些明顯的東西*可能不明顯,但非常基本。你認爲拋出異常是什麼? – shmosel

回答

1

它告訴你,mathsChoice()有沒有執行過的機會。如該特定塊你總是拋出異常,將終止該程序執行和程序將永遠不會達到這個線mathsChoice()

你應該把mathsChoice()呼叫else塊關閉後。

public static void mathsChoice() throws IOException{ 
     System.out.println("'1' for Addition, '2' for Subtraction, '3' for Division"); 
     int resChoice = scanner.nextInt(); 
     if (resChoice == 1){ 
      additionMethod(); 
     }else if (resChoice == 2){ 
      subtractionMethod(); 
     } else if (resChoice == 3){ 
      divisionMethod(); 
     }else { 
       throw new IOException("Not valid, try again."); 
     } 
    mathsChoice(); 

} 
1

當你扔IOException的方法退出,並且永遠不會達到mathsChoice();線。

您可能希望將其更改爲簡單的打印輸出而不是異常。 System.out.println("Not valid, try again.");