【发布时间】:2015-02-22 03:05:17
【问题描述】:
我正在创建一个使用 java 创建二维矩阵的程序,它假设在检查数字是否为素数后构建一个二维数组。
我知道错误出现在 createMatrix 函数的 for 循环中,我希望有人能帮助我并解释我的错误在哪里以及如何修复它。
系统显示此错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at test6.test6.createMatrix(Question6.java:26)
at test6.test6.main(Question6.java:52)
这是我的代码:
package test6;
public class test6 {
public static int isPrimeNumber(int number) {
if (number == 2 || number == 3) {
return 1;
}
if (number % 2 == 0) {
return 0;
}
int sqrt = (int) Math.sqrt(number) + 1;
for (int i = 3; i < sqrt; i += 2) {
if (number % i == 0) {
return 0;
}
}
return 1;
}
public static int[][] createMatrix(int[][] m) {
int i, j;
for (i = 0; i < m[0].length; i++) {
for (j = 0; j < m.length; j++) {
System.out.println(m[i][j]);
}
}
return m;
}
public static String toString(int[][] m) {
StringBuilder text = new StringBuilder();
for (int row = 0; row < m.length; row++) {
int r[] = m[row];
for (int col = 0; col < r.length; col++) {
if (col > 0)
text.append(", ");
text.append(r[col]);
}
text.append("\n");
}
return text.toString();
}
public static void main(String[] args) {
int[][] num = new int[][] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 } };
System.out.println(toString(createMatrix(num)));
}
}
【问题讨论】:
-
使用调试器准确查看数组索引超出范围的位置
-
有了 Java 漂亮的堆栈跟踪,您不需要调试器。
-
正如@aioobe 所说,这里的调试器太过分了。查看堆栈跟踪指向的行。有你的错误。如果您需要调试它,请在错误周围添加一些打印。
标签: java for-loop matrix runtime-error multidimensional-array