如何逐列打印数组,从最后一列和最后一行开始,向后打印到第一列和第一行。我得到一个OutOfBoundsException。我认为问题出在我的内循环上。
应该是这样的89、66、21、90、54、等等…
{33, 92, 54},
{22, 43, 90},
{26, 85, 21},
{75, 14, 66},
{ 8, 49, 89}
};
for(col=2; col<stuff.length; col++)
{
for(row=4; row<stuff.length; row--)
{
System.out.print(stuff[row][col] + ",");
}
System.out.println();
}
我想你可能有两个问题。首先,你的第一个循环从2开始,然后继续计数。这意味着它将只打印最后一行。我认为您需要将col++
更改为col--
以及将其从col<stuff.length
更改为col>=0
。第二个for
需要从row<stuff.length
到row>=0
进行类似的更改。IndexOutOfBounds将来自内部循环,进入无限循环倒数,这将最终导致它尝试以负值访问数组。
1)你的循环从col2开始计数,这意味着只有最后一列将被打印
2)你需要改变外部循环计数器,当它小于0时停止,这样就不会造成无限循环
3)你需要对内循环做同样的事情,并确保它计数到0并停止
应该可以了
假设东西是你的二维数组。的东西。Length总是返回no的行数,得到no。对于列你需要做的东西[0].length
以上问题的解决方法如下:
public static void main(String args[]){
int A[][] = {{33,92,54},
{22,43,90},
{26,85,21},
{75,14,66},
{8,49,89}};
int rowCount = A.length;
int colCount = A[0].length;
System.out.println("rows:"+rowCount);
System.out.println("cols:"+colCount);
for(int j= colCount-1; j>=0;j--){
for (int i = rowCount-1;i>=0;i--){
System.out.print(A[i][j] +",");
}
}
}