解决方案 »
- 谁做过无线通讯基站的服务器端管理软件
- Thread构造的问题
- eclipse的快捷键
- 关于UDP传输的问题
- 哎呀我照着书打程序也有错,大侠帮看看怎么回事?
- Vector是不是已经完全被ArrayList或LinkedList取代了呢?在什么情况下还需要使用它?
- java 监控
- java.sql.SQLException [Microsoft][ODBC 驱动程序 管理器]非法的游标状态
- applet 如何启动新的 applet
- 各位看<think in java>第二版英文版,有什么心得吗?我英文不好,借助金山词霸,看的速度还超慢,好像一共有一千多页,不知道啥时候才能看完
- 异常处理的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();
}
}
终于明白了 非常感谢!刚开始学很多地方都不太适应。