我是java新手,现在我正在学习数组,
这是示例程序:
public class Array {
public static void main(String[] args) {
int[][] twodim = new int[][] { {1,2,4,4}, {2,4,5,5,4,3,3} };
int d1 = twodim.length;
int d2 = twodim[1].length;
for (int i = 0; i < d1; i++){
for (int j = 0;j < d2; j++){
System.out.println(twodim[i][j]);
}}
}
}
我的输出:
4
4
这是不正确的,请指导我,提前致谢。
答案 0 :(得分:0)
尝试这个配合,你的循环参数错误
基本上,它是一个二维数组。第一个循环检查外部数组长度,第二个循环检查每个单独数组的长度。for (int i = 0; i < twodim.length; i++){
for (int j = 0;j < twodim[i].length; j++){
System.out.println(twodim[i][j]);
}
}
答案 1 :(得分:0)
将第二个维度放入第一个循环:
public static void main(String[] args)
{
int[][] twodim = new int[][] { { 1, 2, 4, 4 }, { 2, 4, 5, 5, 4, 3, 3 } };
int d1 = twodim.length;
for (int i = 0; i < d1; i++)
{
int d2 = twodim[i].length;
for (int j = 0; j < d2; j++)
{
System.out.println(twodim[i][j]);
}
}
}
答案 2 :(得分:0)
您提供的代码不会输出您所说的内容。它的输出是:
1
2
4
4
然后它抛出异常:
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:4
以下是您的d1
和d2
变量设置为:
int d1 = twodim.length;
// d1 = 2, the length of the outer array
int d2 = twodim[1].length;
// d2 = 7, the length of the second inner array, [2,4,5,5,4,3,3]
所以,外部循环将循环两次,这就是你想要的。
但是,内部循环将始终循环7次,因为这是d2
等于的内容。这导致打印出第一个内部数组1,2,4和4中的每个数字,然后当它尝试访问第5个数字时,ArrayIndexOutOfBoundsException
发生,因为没有第5个数字第一个内部阵列。
相反,您应该让第二个循环仅循环遍历每个数组的内容,如下所示:
for(int i = 0; i < twodim.length; i++) {
for(int j = 0; j < twodim[i].length; j++) {
// note that twodim[i].length is the length of the array that you are currently looping through
System.out.println(twodim[i][j]);
}
}
这个输出是:
1
2
4
4
2
4
5
5
4
3
3
答案 3 :(得分:-1)
当i = 0且j = 4时,您的代码会抛出IndexOutOfBoundsException
。
这是因为你的数组长度不一样。