一、前言
在Python,Java中常见。但我有次在Java中使用时,发现老是下标溢出。
PTA题目:
报错:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at Main.main(Main.java:17)
代码:
for (int i = 0; i < n; i++) {
s[i]=sc.nextLine().split(" ");
}
for (int i = 0; i < m; i++) {
s2[i]=sc.nextLine().split(" ");
}
二、解决
后面是发现split(" ")
会返回一个长度小于 5 的数组,导致后续访问 s[j][1]
等索引时发生越界。
就很没想到,因为自己也是最近才开始重拾Java,所以用得不熟练,也没有想到被这个背刺了哈
哈。最后改成了
for (int i = 0; i < n; i++) {
for (int j = 0; j < 5; j++) {
if (sc.hasNext()) {
s[i][j] = sc.next();
} else {
s[i][j] = ""; // 填充默认值
}
}
}
//String[][] s2 = new String[m][3];
for (int i = 0; i < m; i++) {
for (int j = 0; j < 3; j++) {
if (sc.hasNext()) {
s2[i][j] = sc.next();
} else {
s2[i][j] = ""; // 填充默认值
}
}
}
就运行通过了。对于Java中next nextLine 一次就用一种 然后熟练使用,遇到问题不要怕,解决了才是更重要的。
标签:nextLine,Java,函数,int,s2,++,算法,Split,sc From: https://blog.csdn.net/m0_72696598/article/details/144510438