3

我还在学习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);
        }
    }
}

现在我有一个问题。我和妹妹玩了这个“游戏”。我姐姐在小键盘上打字。她在按 Enter 之前不小心按了 + 按钮,我遇到了一些错误。我的问题是:我怎样才能让我的应用程序打印一行,说你只能输入数字,然后再次重新启动游戏存根?

4

4 回答 4

4

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

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!");

    }
 }
于 2013-07-09T20:53:25.240 回答
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 类的功能。

于 2013-07-09T21:04:54.477 回答
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!");
    } 
}
于 2013-07-09T20:56:47.457 回答
0

由于您收到的错误是 Exception: InputMismatchException

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

这个

这个

知道它实际上是如何工作的。

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

于 2013-07-09T21:01:57.013 回答