2 qq 39831531 qq_39831531 于 2017.08.31 16:29 提问

JAVA的一个简单的FOR循环,为什么总是不对呢?

图片说明
明明开了长度为3的数组,循环却只能打两个。

循环的次数总比 给的 n 小一。。。。
求大神指教

6个回答

better_world
better_world   2017.08.31 17:23
已采纳

你最开始输入的是 4+“回车”

但是nextInt() 指读取了 4,导致缓存区中残留了一个 “回车”

所以系统认为后来你的操作是 “回车” ,“asdf回车”,“asdf回车”,“fdsa回车”

相当于第一个字符串输入的是空字符

最后要说的是nextInt()和nextLine() 有一点不同就是,nextInt不吃回车 nextLine吃回车

Small_Mouse0
Small_Mouse0   Ds   Rxr 2017.08.31 16:48

当你输入4,,敲回车后,,后面的回车也算一个字符,,第一个nextLine()会吧这个字符吃掉,
所以,,你只能输入三个,,懂了吧,

所以
图片说明
看这里多了一个回车,,这就是你第一个nextLine的内容

还需要多解释???追问吧,,,,对你有帮助了,采纳把,

qq_24029841
qq_24029841   2017.08.31 16:51

是循环了三次,但是第一次读的是一个空行,你调试运行就能看出来,
解决方案
in.nextLine();
for (int i = 0;i < ssr.length;i++ ) {
ssr[i] = in.nextLine() ;

    }
在进入循环前,把空行先读了。
a645328869
a645328869   2017.08.31 16:42

你在你的in.nextInt()后再加一个in.nextLine()试一下.关键在于nextLine和其它next的区别,你自己试一下印象最深。

weixin_37848710
weixin_37848710   2017.08.31 17:11

注意在你in.nextInt()方法之前,已经循环遍历了一个一字节

qq_39831531
qq_39831531   2017.08.31 17:30

为什么答的都那么好 啊!!!

为什么只能采纳一个啊!!!

楼上的各位都谢谢了!!!

Csdn user default icon
上传中...
上传图片
插入图片