我有一个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);
}
答案 0 :(得分:1)
因为anonymous type in C#
返回表示键入的字符的System.in.read()
对象。将其转换为char
将返回具有完全不同值的int
对象,而不是所键入的实际整数。
要解决此问题,您应该使用Scanner
类,该类具有适用于此的nextInt()
方法。它会在无效输入上抛出InputMismatchException
,所以如果你想要错误处理,你应该抓住它。
以下是代码的工作(并略微清理)版本:
char