gpt4 book ai didi

java - Java 书中的嵌套 do-while 和 System.in.read() 示例

转载 作者:行者123 更新时间:2023-12-01 11:58:20 24 4
gpt4 key购买 nike

“ignore”变量的内部 do-while 在这里做什么?Java 新手,似乎无法理解这里发生了什么,或者为什么它包含在示例中?

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

char ch, ignore, answer = 'K';

do {
System.out.println("Guess letter btwn A-Z: ");

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

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

if (ch == answer) System.out.println("**RIGHT**");
else {
System.out.print("...Sorry, you're ");
if(ch < answer) System.out.println("too low");
else System.out.println("too hight");
System.out.println("try again!\n");
}
} while (answer != ch);
}
}

最佳答案

正如评论中提到的,do/while循环基本上是一种丢弃该行其余部分的方法。否则,程序将继续读取用户在第一个字符之后放置的任何垃圾(包括新行,这显然是意外行为)。

变量名ignore可能是因为这些字符被忽略了。

基本上,发生的事情是这样的:

  • 程序打印 "Guess letter btwn A-Z: "
  • 用户输入 "Input"随后换行
  • 程序抓取'I'并将其放入 ch变量
  • 程序循环遍历"Input"并读取 n , p , u ,和t 。由于这些都不是换行符,因此它继续循环。
  • 程序读取 \n 。这打破了循环。下次程序调用 read ,它将得到-1因为没有更多数据(此时用户可以输入更多数据,但无论如何)。

理论上,该程序可以使用while(ignore!=-1)并且同样正确(并且可能更稳健一些)。

关于java - Java 书中的嵌套 do-while 和 System.in.read() 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com