很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,我觉得就应该是j<4 谢谢 algorithmjavamatrix 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 for(j=0;j<3;++j) // 很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,我觉得就应该是j<4 System.out.printf(a[i][j]+","); 你这里循环完了,J是3;如果是j<4的话,执行到这里J就是4; System.out.println(a[i][j]); 这里的a[i][4]就outofindex了。 for循环如果没有{}的话,只有下面一条语句是属于循环体的,最后的一句println不在循环体之中,执行完了循环之后j的值已经是4了。 如果条件是j<4,则跳出循环的时候j==4,第二个System.out中的a[i][j]的j就是4了,所以越界了 谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理,i<3也应该能执行到[3],也就是第四行啊? 谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理,i<3也应该能执行到[3],也就是第四行啊? 谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理,i<3也应该能执行到[3],也就是第四行啊? 34 for(j=0;j<3;++j) 35 System.out.printf(a[i][j]+","); 36 System.out.println(a[i][j]); 楼主,如果在这里把j<3 改成j<4,Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at Question1_7.Question1_7.main(Question1_7.java:36)就会出现报错,楼主要仔细观察报错语句的提示,这句话意思即为:异常 数组越界了 越界的值为4并且是在这个类中的第36句。根据这个提示很容易锁定问题所在。即:关于j的循环,0,1,2,3当循环结束时j的值为4.然后在36句出现数组越界的问题。 谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理啊 ,i<3也应该能执行到[3],也就是第四行啊? 谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理,i<3也应该能执行到[3],也就是第四行啊? 真晕,说到这种程度你还是不理解?把main函数里面改成这样你是不是就好理解了。 public static void main(String[] args) { int[][] a = { { 1, 2, 3, 4 }, { 0, 3, 9, 5 }, { 4, 6, 8, 3 }, { 4, 6, 8, 3 } }; // setZero(a); setZeros(a); for (int i = 0; i < 4; ++i) { int j; for (j = 0; j < 4; ++j) // 很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,我觉得就应该是j<4 System.out.printf(a[i][j] + ","); System.out.println(); } } 谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理,i<3也应该能执行到[3],也就是第四行啊? 真晕,说到这种程度你还是不理解?把main函数里面改成这样你是不是就好理解了。 public static void main(String[] args) { int[][] a = { { 1, 2, 3, 4 }, { 0, 3, 9, 5 }, { 4, 6, 8, 3 }, { 4, 6, 8, 3 } }; // setZero(a); setZeros(a); for (int i = 0; i < 4; ++i) { int j; for (j = 0; j < 4; ++j) // 很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,我觉得就应该是j<4 System.out.printf(a[i][j] + ","); System.out.println(); } } 终于明白了 非常感谢!刚开始学很多地方都不太适应。 为什么JFrame不能装AWT组件!! 我写了一个程序不知怎么回事不对请高手帮我看一下 SWT 数据量很大,有什么优化的方法吗?介绍一下谢谢 如何让JTable 定位到最后一行,也就是新近添加的信息那一行,请大家帮忙解答,谢谢哦 小小问题请高手指教。。。 大家看看为什么会出现这样的结果? 有什么好办法,使得输出和输入一样. 如何操作txt文件中的内容?? 检验大家的finally学的程度的一段代码,你能全部答对吗? classpath & package 谁有smartUpload的源代码,小弟急用!!!!!!!!1 异常处理的finally语句块有什么用? 【急】Java文件老是乱码的问题
System.out.printf(a[i][j]+",");
你这里循环完了,J是3;如果是j<4的话,执行到这里J就是4;
System.out.println(a[i][j]);
这里的a[i][4]就outofindex了。
谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理,i<3也应该能执行到[3],也就是第四行啊?
谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理,i<3也应该能执行到[3],也就是第四行啊?
谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理,i<3也应该能执行到[3],也就是第四行啊?
35 System.out.printf(a[i][j]+",");
36 System.out.println(a[i][j]);
楼主,如果在这里把j<3 改成j<4,Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Question1_7.Question1_7.main(Question1_7.java:36)
就会出现报错,楼主要仔细观察报错语句的提示,这句话意思即为:异常 数组越界了 越界的值为4
并且是在这个类中的第36句。
根据这个提示很容易锁定问题所在。即:关于j的循环,0,1,2,3当循环结束时j的值为4.然后在36句出现数组越界的问题。
谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理啊 ,i<3也应该能执行到[3],也就是第四行啊?
谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理,i<3也应该能执行到[3],也就是第四行啊? 真晕,说到这种程度你还是不理解?
把main函数里面改成这样你是不是就好理解了。 public static void main(String[] args) {
int[][] a = { { 1, 2, 3, 4 }, { 0, 3, 9, 5 }, { 4, 6, 8, 3 },
{ 4, 6, 8, 3 } };
// setZero(a);
setZeros(a);
for (int i = 0; i < 4; ++i) {
int j;
for (j = 0; j < 4; ++j)
// 很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,我觉得就应该是j<4
System.out.printf(a[i][j] + ",");
System.out.println();
}
}
谢谢 不过还是不明白 这一行for(int i=0;i<4;++i) 如果我改成i<3 矩阵会被删掉一行,必须要i<4才行。 后面的 j 我想明白了,可是应该是同样的道理,i<3也应该能执行到[3],也就是第四行啊? 真晕,说到这种程度你还是不理解?
把main函数里面改成这样你是不是就好理解了。 public static void main(String[] args) {
int[][] a = { { 1, 2, 3, 4 }, { 0, 3, 9, 5 }, { 4, 6, 8, 3 },
{ 4, 6, 8, 3 } };
// setZero(a);
setZeros(a);
for (int i = 0; i < 4; ++i) {
int j;
for (j = 0; j < 4; ++j)
// 很奇怪 明明是4*4的 矩阵,为什么这里j<4就会报错,我觉得就应该是j<4
System.out.printf(a[i][j] + ",");
System.out.println();
}
}
终于明白了 非常感谢!刚开始学很多地方都不太适应。