永发信息网

System.in.read()问题

答案:3  悬赏:70  手机版
解决时间 2021-02-18 04:41
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();
这个循环会出现在这里等待直到有内容输入过来为止
内容的输入一般是以回车(13)提交来输入
那么如果你开始运行然后输入abc回车提交,然后再输入Q回车提交
那么结果是
a-->i_count++
b-->i_count++
c-->i_count++

(13)-->i_count++
(10)-->i_count++
Q-->i_count++
flag == 'Q'退出
所以结果是 counted6totalbytes.
这样解析一下能明白么?
全部回答
首先我们要理解system.in.read(); 的工作原理--> 当我们在屏幕中输入数据后,是直接放在缓冲区中,记录你每一次的输入!! 而system.in.read();的工作就是依次从这个缓冲区中读取下一个字符的ascii码! 比如现在我们在终端输入23,这样我们输出一下read()的值为50,而后我们再read()一次会是51,再read()一次就是13(回车键的ascii码值)了!! 这样我们就应该理解了~~ 呵呵 以前也搞错,现在借这问题学习了,好问题!
输入什么,再输出什么,直到大写的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.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
爱客家超市这个地址在什么地方,我要处理点事
【一朵时光轻流年】一朵时光轻流年作文
电脑每隔一段时间就响传奇霸业的广告
地税局工作人员考哪个在职研究生比较好
short-range ordered long-range ordered什么
六道里只有人道有僧吗
英式橄榄球加气吗?球嘴怎么是个洞?
我来替帅锅放图第二幅漫画叫什么
小学生日记300字
你好。一楼门面二楼住房怎么设计图
妹出家不回来怎么办?
大家都来说说哪些有加杀意的装备吧
目前,从图中的甲城市到达乙城市需要环海绕一
常州市武进万龙织料厂在哪里啊,我有事要去这
为什么鼠标指针移到桌面顶端不变成小手状?
推荐资讯
我财付通里面有1000元冻结的怎么提现出来?
飞轮海代言的泰山仙草蜜怎么现在没得卖了 广
秋艳服饰怎么去啊,有知道地址的么
怎么把qq音乐上面的歌曲设置成小米手机铃声
【2008年奥运会金牌】如图是我国2008年奥运会
【神话故事的成语】关于寓言故事、历史故事、
The Young Pop KingHe is quiet and shy. He
有人认为,苏联发明了“在落后的以农业为主的
当一个男生对一个女生的态度不一样,是什麼意
小猫一直拉稀会死吗?
晨曦果园怎么去啊,有知道地址的么
常温时,BaSO4的Ksp==1.08x10-10.现将等体积
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?