为什么我的数字猜测游戏输出到控制台?

时间:2014-10-16 22:59:19

标签: java loops

我的程序不会向控制台输出任何内容。我不确定我做错了什么。我需要使用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."); 
            }
        } 
    }
}

3 个答案:

答案 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."); 
        }
    }