2013-05-15 27 views
-1

如果在我的程序即時通訊使用scanner.NextDouble()和用戶輸入的東西是不是雙重的,即任何類型的字符,我怎麼能重新提示他們輸入一個有效的雙?我試着拋出一個異常並捕獲它,但我所做的只是告訴它它是錯誤的,我不知道如何將控制權轉移回try塊。如果任何人有任何輸入,將不勝感激!Java請求雙

private double requestDoubleFromUser(String prompt) 
{ 
    /*** Local Variables ***/ 

    Scanner sc = new Scanner(System.in); 
    double userInput = 0; 

    try 
    { 
    /*** Get input from user ***/ 

    System.out.print(prompt); 
    userInput = sc.nextDouble(); 
    } 

    catch(Exception e) 
    { 
     System.out.println("That was not a double"); 
    } 

    return userInput; 
} 

感謝

+2

使用while循環在輸入錯誤時循環。提示:當你得到一個異常。 –

+0

你也可以看看簡單的'(typeCasting)' – Tdorno

回答

3

你可以使用一個while循環,這樣的事情:

double userInput = 0; 
boolean done = false; 
while (!done) { 
    try { 
     /*** Get input from user ***/ 
     System.out.print(prompt); 
     userInput = sc.nextDouble(); 
     done = true; 
    } catch(Exception e) { 
     System.out.println("That was not a double"); 
    } 
} 
0

您可以撥打電話到Scanner#nextDouble在一個循環,並用受涼InputMismatchException消耗非數字類型。使用Double類型允許循環繼續檢查輸入值。

Scanner sc = new Scanner(System.in); 
Double userInput = null; 

while (userInput == null) { 
    try { 
     System.out.print("Enter double:"); 
     userInput = sc.nextDouble(); 
    } catch (InputMismatchException e) { 
     System.out.println("That was not a double: " + sc.nextLine()); 
    } 
} 
+0

完美!多謝你們 –