永发信息网

System.in.read()问题

答案:3  悬赏:70  手机版
解决时间 2021-02-18 04:41
  • 提问者网友:精神病院里
  • 2021-02-17 13:35
public static void main(String args[]) throws IOException {
int i_readb;
int i_count = 0;
char flag = 0;
while (flag != 'Q') {
i_readb = System.in.read();
flag = (char) i_readb;
i_count++;
System.out.print((char) i_readb);
}
System.err.println("counted" + i_count + "totalbytes.");
}

这段程序的输出结果为什么是1,4,7这样的
最佳答案
  • 五星知识达人网友:玩家
  • 2021-02-17 14:12
System.in.read();
这个循环会出现在这里等待直到有内容输入过来为止
内容的输入一般是以回车(13)提交来输入
那么如果你开始运行然后输入abc回车提交,然后再输入Q回车提交
那么结果是
a-->i_count++
b-->i_count++
c-->i_count++

(13)-->i_count++
(10)-->i_count++
Q-->i_count++
flag == 'Q'退出
所以结果是 counted6totalbytes.
这样解析一下能明白么?
全部回答
  • 1楼网友:平生事
  • 2021-02-17 15:52
首先我们要理解system.in.read(); 的工作原理--> 当我们在屏幕中输入数据后,是直接放在缓冲区中,记录你每一次的输入!! 而system.in.read();的工作就是依次从这个缓冲区中读取下一个字符的ascii码! 比如现在我们在终端输入23,这样我们输出一下read()的值为50,而后我们再read()一次会是51,再read()一次就是13(回车键的ascii码值)了!! 这样我们就应该理解了~~ 呵呵 以前也搞错,现在借这问题学习了,好问题!
  • 2楼网友:想偏头吻你
  • 2021-02-17 14:35
输入什么,再输出什么,直到大写的Q退出,最后统计字节数 java T Process started >>> 3 3 1 1 a a c c b b 4 4 d d e e w w q q a a s s q q Q Qcounted40totalbytes. <<< Process finished.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯