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这样的
System.in.read()问题
答案:3 悬赏:70 手机版
解决时间 2021-02-18 04:41
- 提问者网友:精神病院里
- 2021-02-17 13:35
最佳答案
- 五星知识达人网友:玩家
- 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.
这样解析一下能明白么?
这个循环会出现在这里等待直到有内容输入过来为止
内容的输入一般是以回车(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.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯