2
import java.util.Random;
import java.util.Scanner;

public class Game {
    public static void main(String[] args) {

        System.out.println("Guess a number betwwen 1 and 1000");

        Random rand = new Random(); 
        int secretNumber = rand.nextInt (1000);


        Scanner keyboard = new Scanner(System.in);
        int guess;

        do {
        guess = keyboard.nextInt();

        if (guess == secretNumber)
            System.out.println("You WON!!! Congratulations!");
        else if (guess < secretNumber)
             System.out.println("Nope, to low");
        else if (guess > secretNumber)
            System.out.println("Sorry, to high");


        } while (guess != secretNumber);


    }
}

このコードに IF NOT NUMERIC INPUT System.out.println("invalid input, please use type numbers only!") ステートメントを追加するにはどうすればよいですか?

4

7 に答える 7

6

を呼び出す前に、Scannerのメソッドを使用して、入力が数値かどうかを判断する必要があります。hasNextInt()nextInt

do {
    while (!keyboard.hasNextInt()) {
        System.out.println("Please enter only numbers.");
        keyboard.next(); // Skip the wrong token
    }
    // Now that the input is valid, read the value:
    guess = keyboard.nextInt();
    // Put the rest of your logic here
    ...
} while (guess != secretNumber);
于 2012-09-27T17:47:43.417 に答える
3

Scanner.nextInt() は InputMismatchException、次のトークンが Integer 正規表現と一致しない場合、または範囲外の場合にスローします

したがって、これを念頭に置いて、コードを try-catch でラップする必要があります

于 2012-09-27T17:47:55.613 に答える
1

次のように、guess = keyboard.nextInt() をラップする必要があると思います。

 try  
 {  
     guess = keyboard.nextInt()
     Integer.parseInt(guess);  

     <your if statements>

  } catch(Exception ex)  
  {  
    System.out.println("Your comment");
  }  
于 2012-09-27T17:49:11.643 に答える
0

ループ内に try catch ブロックを追加できます。

  do {
  try{
    guess = keyboard.nextInt();

    if (guess == secretNumber)
        System.out.println("You WON!!! Congratulations!");
    else if (guess < secretNumber)
         System.out.println("Nope, to low");
    else if (guess > secretNumber)
        System.out.println("Sorry, to high");
    }
catch(InputMismatchException e){
System.out.prinln("Not a number");
}


    } while (guess != secretNumber);
于 2012-09-27T17:50:29.197 に答える
0

スキャナーを使用している間は、入力されたのが整数かどうかはわかりません。「nextInt」が入力されるまで待機します。あなたができることは、

Integer.parseInt() メソッド. 入力文字列が整数でない場合、NumberFormatException がスローされます。

文字列を推測して使用します。推測=キーボード.次();

次に、try-catch で Integer.parseInt(guess) を使用して問題を解決します。

于 2012-09-27T17:51:05.020 に答える
0
public class Game {
    public static void main(String[] args) {

    System.out.println("Guess a number betwwen 1 and 1000");

    Random rand = new Random(); 
    int secretNumber = rand.nextInt (1000);


    Scanner keyboard = new Scanner(System.in);
    int guess;

    do {
    if (!keyboard.hasNextInt()) {
        System.out.println("invalid input, please use type numbers only!");
        return;
    }
    guess = keyboard.nextInt();

    if (guess == secretNumber)
        System.out.println("You WON!!! Congratulations!");
    else if (guess < secretNumber)
         System.out.println("Nope, to low");
    else if (guess > secretNumber)
        System.out.println("Sorry, to high");


    } while (guess != secretNumber);


    }
}
于 2012-09-27T17:54:53.207 に答える
0
import java.util.Random;
import java.util.Scanner;

public class Game {
    public static boolean isInteger( String input )  
    {  
       try  
       {  
          Integer.parseInt( input );  
          return true;  
       }  
       catch( Exception e)  
       {  
          return false;  
       }  
    } 

    public static void main(String[] args) {

        System.out.println("Guess a number betwwen 1 and 1000");

        Random rand = new Random(); 
        int secretNumber = rand.nextInt (1000);

        Scanner keyboard = new Scanner(System.in);
        int guess=-1;

        do {
        String g = keyboard.next();
        if(isInteger(g)){
            guess = Integer.parseInt(g);
            if (guess == secretNumber)
                System.out.println("You WON!!! Congratulations!");
            else if (guess < secretNumber)
                System.out.println("Nope, to low");
            else if (guess > secretNumber)
                System.out.println("Sorry, to high");
        }
        else{
            System.out.println("NaN");
        }

        } while (guess != secretNumber);


    }
}
于 2012-09-27T17:55:39.553 に答える