我的程序不会向控制台输出任何内容。我不确定我做错了什么。我需要使用System.in.read()
,不能使用Scanner
。我还需要使用我选择的任何循环。
package MyGuessingGame;
import java.io.IOException;
/**
*
* @author Anthony
*/
public class MyGuessingGame {
/**
* @param args the command line arguments
* @throws java.io.IOException
*/
public static void main(String[] args) throws IOException {
int guess = 0;
int answer = 8;
//Todo change to random
boolean correct = false;
while (correct == false); {
System.out.println("Please enter your guess!");
guess = System.in.read();
System.in.read();
if (guess == answer) {
correct = true;
System.out.println("Congradulations You have won!");
} else if (guess != answer) {
correct = false;
System.out.println("Sorry try again.");
}
}
}
}
答案 0 :(得分:1)
这一行:
while(correct == false);
最后需要丢失分号。就目前而言,它是一个无限的空循环,你的程序不会超越这个陈述。
答案 1 :(得分:0)
要添加到Greg的回答,System.in.read()
会返回char
。如果将其存储在int
中,则将具有值的ASCII表示。
例如56是'8'的ASCII。 HEX中ASCII表中数字的偏移量为0x30。因此,要使代码实际工作,您应该将0x30减去接收值。
因此,您应该将输入行更改为以下内容:
guess = System.in.read() - 0x30;
答案 2 :(得分:0)
首先,当您使用boolean
类型时,无需检查(correct == false)
,您只需使用!
这样的运算符(!correct)
你遇到的问题是你在while之后使用分号,而while循环没有分号。所以你有这个while(!correct);
,所以它在没有执行内部代码块的情况下保持无限循环
int guess = 0;
int answer = 8;
//Todo change to random
boolean correct = false;
while(!correct)
{
System.out.println("Please enter your guess!");
guess = System.in.read();
if (guess == answer) {
correct = true;
System.out.println("Congradulations You have won!");
} else {
System.out.println("Sorry try again.");
}
}