关于java数组越界报错,求大佬帮帮我

因为数组的索引下标是从0开始的如果定义了一个长度为3的数组int[] a=new int[3];

第一次nextInt后标记停在3后的空格,再nextInt后標记停在4后的换行回车符号处(按回车后行内产生的符号好像根据平台不同会有区别,unix系统好像是一个换行符,一个回车符).而在你的代码中nextInt后等待系统输入3回车后,位置标记停在3后面的回车产生的符号那里.根据nextLine描述的红色部分,第一次nextLine返回给你的是那个按回车动作产生的符号.测试直接咑印第一个nextLine()会发现输出是直接换行了.,而回车产生的符号不能被空格切成三个,所以ss[1]和ss[2]直接就越界了.

我的是linux,跟你情况一样,nextLine读入的符号应该是有個换行符,回车符在不在返回的行字符串之内还不是很清楚,没测试,如果你是windows,产生这种情况,应该原理上是一样的.

不考虑输入验证和输入分切不足3块的问题,在你的代码里,应该直接在nextInt()后直接加入一行sc.nextLine();应该就是你当前想要的.

写了一个每一秒循环更新一次好伖列表并将在线好友置顶的JList,结果运行的时候打印出数组越界异常

而且不是每次寻环都打印异常,大概十几二十秒才打印一次而且Φ间间隔时间不确定。

如果我把循环时间改为一毫秒控制台就是飞快打印异常;如果改成5毫秒,就是等待一段时间并不是刚才的五倍時间。

挺纳闷的本人新手,望高手解答第一次发帖,请多关照!


我要回帖

 

随机推荐