【发布时间】:2014-04-23 00:39:46
【问题描述】:
给定一个具有不同长度行的整数数组,是否可以逐列打印整个二维数组?我了解如何逐行执行此操作,但我正在为此苦苦挣扎。
int[][] a = new int[5][];
a[0] = new int[4];
a[1] = new int[2];
a[2] = new int[5];
a[3] = new int[3];
a[4] = new int[1];
int longestRowLength = a[0].length;
for(i = 1; i < a.length; i++)
{
if(a[i].length > longestRowLength)
longestRowLength = a[i].length;
}
for(i = 0; i < a.length; i++)
{
for(j = 0; j < a[i].length; j++)
{
a[i][j] = rand.nextInt(10);
System.out.print(a[i][j]);
}
System.out.println();
}
for(j = 0; j < longestRowLength; j++)
{
for(i = 0; i < a.length; i++)
{
if(a[i].length < longestRowLength)
continue;
System.out.print(a[i][j]);
}
}
}
我已经这样做了,但问题是如何识别我们超出了其中一个数组的范围。我的 if(a[i].length 编辑: 好的,我已将该行更改为: 现在它可以工作了,但是它将列打印为行。有没有办法让它逐列打印,但让它像行一样打印? (PS 是的,if 语句的第一个条件是不必要的)。 if(longestRowLength - a[i].length > 0 && (j+1) > a[i].length)
continue;
System.out.print(a[i][j]);
【问题讨论】: