首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java For Loop Logic

Java For Loop Logic
EN

Stack Overflow用户
提问于 2019-10-27 11:28:56
回答 2查看 67关注 0票数 0

好的,我是一个初学者,正在学习Herbert Schildt的"Java初学者指南“一书。这是我在学习循环章节时遇到的一段代码。

代码基本上要求用户输入,如果用户输入与条件"s“匹配,循环就不会开始,如果它匹配它的星号,并在每次迭代时打印"pass# + i”。

我的问题是,为什么当我输入除"s“之外的任何内容时,输出都是两行"pass#"?为什么不只有一行呢?

代码语言:javascript
运行
复制
    System.out.println("pls type s");

    for( i = 0; (char) System.in.read() != 's'; i++)
        System.out.println("pass#" + i);
EN

回答 2

Stack Overflow用户

发布于 2019-10-27 11:46:14

这是因为在输入之后按enter键,这会通知shell将您的输入(包括按enter键)放入标准输入。Enter本身具有ASCII值。因此,它(enter)也被算作一个字符。

尝试仅按enter键;您将看到一条pass#消息。

票数 1
EN

Stack Overflow用户

发布于 2019-10-27 13:04:34

函数的作用是:按字节读取数据。所以,当你输入一个字符并按下enter....what时,

提示:请键入s

输入:A(按enter键)

Java将此理解为:"a \n“,因为enter也被视为字节值。

作为两个字节的结果,print语句运行两次。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58576414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档