试图了解猜测游戏在Java中的工作原理 公共类猜测{ publicstaticvoidmain(字符串arg[])抛出java.io.IOException{ char ch,ignore,answer='k'; 做{ System.out.println(“我在想一个a-z之间的字母,你能猜出来吗?”); ch=(char)System.in.read(); 做{//

试图了解猜测游戏在Java中的工作原理 公共类猜测{ publicstaticvoidmain(字符串arg[])抛出java.io.IOException{ char ch,ignore,answer='k'; 做{ System.out.println(“我在想一个a-z之间的字母,你能猜出来吗?”); ch=(char)System.in.read(); 做{//,java,Java,此代码将继续从标准输入中读取字符,直到读取换行符为止。这是指在游戏提示用户再次输入字符之前,放弃所有其他字符 你可以第一次输入abc。如果没有这个代码,如果你答错了,游戏会提示你再输入一个字母,但是它会读到你第一次输入的b。Dude,这是一个非常非常简单的程序。如果你多尝试一点,如果你有机会,你应该能够理解它编程的基础知识,比如if或while循环是如何工作的,我不会投反对票,因为我知道在开始的时候,事情可能会令人沮丧,主要是在你没有时间的时候。为什么不添加一个断点来开始调试和观察值呢?逻辑很简

此代码将继续从标准输入中读取字符,直到读取换行符为止。这是指在游戏提示用户再次输入字符之前,放弃所有其他字符


你可以第一次输入
abc
。如果没有这个代码,如果你答错了,游戏会提示你再输入一个字母,但是它会读到你第一次输入的
b

Dude,这是一个非常非常简单的程序。如果你多尝试一点,如果你有机会,你应该能够理解它编程的基础知识,比如
if
while
循环是如何工作的,我不会投反对票,因为我知道在开始的时候,事情可能会令人沮丧,主要是在你没有时间的时候。为什么不添加一个断点来开始调试和观察值呢?逻辑很简单。只需读取第一个字符,然后保存它呃,忽略所有按下的字符,而忽略不相等的字符;)了解调试你会喜欢的;)谢谢你的回答,我认为我没有清楚地提出这个问题。我知道那行代码对程序有什么作用,但当我删除代码块并运行程序时,游戏可以运行,但它会重复相应的操作文本正好3次。本质上,我试图理解行缓冲是如何与输入一起工作的。do while循环在停止并等待新的控制台输入之前正好重复了3次。它为什么要这样做?它不应该永远保持循环吗?
public class Guess {
    public static void main(String arg[]) throws java.io.IOException {

        char ch, ignore, answer = 'k';

        do {
            System.out.println("i'm thinking of a letter between a-z, can you guess it?");

            ch = (char) System.in.read();

            do { // <<question about this block, start**
                ignore = (char) System.in.read();
            } while (ignore != '\n'); // <<<end block in question here**

            if (ch == answer)
                System.out.println("***WINNER***");
            else {
                System.out.print("...sorry ");
                if (ch > answer)
                    System.out.println("toooo lowwww ");
                else {
                    System.out.println("tooooo highhh ");
                }
            }
        } while (answer != ch);

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