将用户输入与整数进行比较

时间:2013-07-09 20:50:00

标签: java integer

我仍然在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;
        inputStorage = input.nextInt();
        if (inputStorage == number) {
            System.out.println("You've guessed the right number!");
        }
        else if (inputStorage != number) {
            System.out.println("Wrong number, try again!");
            game(number);
        }
    }
}

现在我遇到了问题。我的小妹妹和我玩这个“游戏”。我妹妹在小键盘上打字。在按下回车之前,她意外地按了+按钮,我得到了一些错误。我的问题是:我怎样才能让我的应用程序打印出一条线,表示你只能输入数字然后重新启动游戏存根?

4 个答案:

答案 0 :(得分:4)

一种方法是将input.nextInt()包装在try catch语句中,并捕获input.nextInt(),InputMismatchException引发的异常。如果你不确定我在说什么,那么try here的一个很好的教程是{{3}}。

try {
    inputStorage = input.nextInt();
} catch (InputMismatchException e){
    System.out.println("invalid type");
}

另一种方法是:

if(input.hasNextInt()){
     inputStorage = input.nextInt();
 }else{
      System.out.println("invalid type");
 }

如果数字被正确猜测,继续游戏尝试使用带有中断的while循环也会出错:

int inputStorage;
boolean notGuessed = true;
while(notGuessed)
{
    if(input.hasNextInt()){
         inputStorage = input.nextInt();
     } else{
         System.out.println("invalid type");
      }
    if (inputStorage == number) {
        System.out.println("You've guessed the right number!");
        notGuessed = false;
    }
    else if (inputStorage != number) {
        System.out.println("Wrong number, try again!");

    }
 }

答案 1 :(得分:1)

这很容易。你可以用各种方式完成它。

试试这个

    public static int checkInt(String strNumber) {
    int Number;
    try {           
        Number = Integer.parseInt(strNumber);
    } catch (NumberFormatException ex) {
        Number = -1;
    }
    return Number;
}

甚至更简单:

    public static int checkInt(String strNumber) {

    Number = Integer.parseInt(strNumber, -1);

    return Number;
}

第二个更简单,因为你省略了一个try catch块,在这种情况下没有正确使用。阅读有关Integer类的功能。

答案 2 :(得分:0)

您可以使用try/catch

boolean b = true;
while (b) {
    try {
          inputStorage = input.nextInt();
          b= false;
    } catch (InputMismatchException e) {
          System.out.println("Invalid input.  Please enter again!");
    } 
}

答案 3 :(得分:0)

由于你得到的错误是一个Excepti:InputMismatchException

您可以使用java中的异常处理机制显式处理异常。

阅读this

阅读this

知道它是如何运作的。

以上建议的答案仅限于异常处理。