为Java猜猜游戏

时间:2016-03-22 00:22:26

标签: java

我有一个Java任务,无法让它工作。

我正在做一个1-100之间的猜谜游戏。当我运行我的代码时,它一直告诉我"太低"是正确还是太高。

这是我的代码:

public static void main(String[] args) throws java.io.IOException {

    int i, ignore, answer = 64;

    do {
        System.out.println("I'm thinking of a number between 1 and 100.");
        System.out.println("Can you guess it?");

        i = (int) System.in.read();

        do {
            ignore = (int) System.in.read();
        } while (ignore != '\n');

        if (i == answer) System.out.println("**RIGHT**");
        else {
            System.out.print("...Sorry, you're ");

            if (i < answer) 
                System.out.println("too low");
            else 
                System.out.println("too high");
            System.out.println("Try again!\n");
        }
    } while(answer != i);
}

1 个答案:

答案 0 :(得分:1)

因为anonymous type in C#返回表示键入的字符的System.in.read()对象。将其转换为char将返回具有完全不同值的int对象,而不是所键入的实际整数。

要解决此问题,您应该使用Scanner类,该类具有适用于此的nextInt()方法。它会在无效输入上抛出InputMismatchException,所以如果你想要错误处理,你应该抓住它。

以下是代码的工作(并略微清理)版本:

char