好的,我是一个初学者,正在学习Herbert Schildt的"Java初学者指南“一书。这是我在学习循环章节时遇到的一段代码。
代码基本上要求用户输入,如果用户输入与条件"s“匹配,循环就不会开始,如果它匹配它的星号,并在每次迭代时打印"pass# + i”。
我的问题是,为什么当我输入除"s“之外的任何内容时,输出都是两行"pass#"?为什么不只有一行呢?
System.out.println("pls type s");
for( i = 0; (char) System.in.read() != 's'; i++)
System.out.println("pass#" + i);发布于 2019-10-27 11:46:14
这是因为在输入之后按enter键,这会通知shell将您的输入(包括按enter键)放入标准输入。Enter本身具有ASCII值。因此,它(enter)也被算作一个字符。
尝试仅按enter键;您将看到一条pass#消息。
发布于 2019-10-27 13:04:34
函数的作用是:按字节读取数据。所以,当你输入一个字符并按下enter....what时,
提示:请键入s
输入:A(按enter键)
Java将此理解为:"a \n“,因为enter也被视为字节值。
作为两个字节的结果,print语句运行两次。
https://stackoverflow.com/questions/58576414
复制相似问题