2013-07-10 64 views
1

我正在java中進行數字猜測遊戲。我希望應用程序在用戶輸入字符串而不是整數時輸出一行。這是我的代碼如下所示:無效類型文本保持打印

import java.util.Scanner; 
import java.util.Random; 
public class guessing_game { 

    static Scanner input = new Scanner(System.in); 
    static Random generator = new Random(); 
    public static void main(String[] args) { 
     int number; 
     number = generator.nextInt(20); 
     System.out.println("Guess the number!"); 
     game(number); 
    } 
    public static void game(int number) { 
     int inputStorage = 0; 
     boolean b = true; 
     while (b) { 
      if (input.hasNextInt()) { 
       inputStorage = input.nextInt(); 
       if (inputStorage == number) { 
        System.out.println("You've won!"); 
        b = false; 
       } 
       else { 
        System.out.println("Wrong number! Try again."); 
       } 
      } 
      else { 
       System.out.println("Only numbers! Try again."); 
      } 
     } 
    } 
} 

的問題是,當用戶鍵入一個字符串,如一個字母,應用表明:只有數字!再試一次。應用程序不會停止一遍又一遍地打印此行。如何阻止此?

回答

1

如果你插入的東西不是數字,那麼(input.hasNextInt())將返回false,因此你不會進入if語句並轉到最低的else語句。

我建議你讀下一個字符串,而不是,如果字符串沒有可轉化爲int那麼你處理這種情況

+0

我該怎麼做?我是Java的初學者,現在學習了一個星期... –

+1

好吧,我已經開始工作了。我做了一個新的字符串,並將該字符串設置爲用戶輸入的任何內容。然後我使用這一行:'int inputStorage1 = Integer.parseInt(inputString);'。然後通過使用catch/try和if語句,我可以使用它。你能向我解釋爲什麼當我這樣做時,它只顯示「唯一的數字」嗎?因爲當我使用整數時,我的應用程序不會停止打印行。我的新應用程序:http://pastebin.com/8m4WsV0T –

1
public static void game(int number) { 
    while (true) { 
     try{ 
      System.out.print("Guess a number: "); // prompt user to enter an int 
      inputStorage = input.nextInt(); // read the number 
      if (inputStorage == number) { 
       System.out.println("You've won!"); 
       break; 
      } 
      else { 
       System.out.println("Wrong number! Try again."); 
      } 
     } catch(final Exception ignored) { // input was not a number 
      System.out.println("\nOnly numbers! Try again."); 
      input.next(); // consume the invalid input 
     } 
    } 
} 

這將提示用戶輸入一個數字,並只告訴用戶如果沒有出現,他們需要輸入一個數字。

如果用戶沒有輸入有效的數字,則會拋出異常並捕獲catch語句。在這種情況下,輸入的輸入不是整數。

+0

我的問題是,我的應用程序不會停止打印「只有數字!再試一次。」 –

+0

@SanderdeLange你有沒有嘗試過的代碼? – 2013-07-10 19:41:12

+0

是的,但每毫秒會有一個新行說只有數字!我已經做到了。我將輸入轉換爲一個字符串,然後將其解析爲一個整數。如果這是不可能的,catch/try語句將會說只有數字。但我不知道爲什麼這個信息只出現一次。 –

0

使用try catch語句很簡單

try { 
    ... 
} catch (NumberFormatException, ScannerException exception) { 
    System.out.println("Input must be a number."); 
}