java 二维数组输出的问题

public class Array{
public static void main(String args[]){
int a[][]={{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25}};
int order=a.length;
for(int i=0;i<=order;i++)
for(int j=0;j<=order;j++)
{
System.out.println(a[i][j]+"\t");
}
}
}
为什么只输出1 2 3 4 5?
那如果要实现对角线两边的数对换要怎么编啊?
for(int i=0;i<order;i++)
for(int j=4;j>=i;j--){
a[i][j]=t;
a[i][j]=a[j][i];
a[j][i]=t;
System.out.println(a[i][j]+"");
}
这样编为什么只输出5 4 3 2 1 10 9 8 7 15 14 13 20 19 25?要怎么改啊?

第1个回答  2009-10-24
public class Array{
public static void main(String args[]){
int a[][]={{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25}};
int order=a.length;
for(int i=0;i<=order;i++){
for(int j=0;j<=order;j++)
{
System.out.println(a[i][j]+"\t");
}

}
}
这样就是遍历整个二维数组。
要说为什么是1,2,3,4,5
我是这样的看的。
因为第1for循环对第2for不起作用。因为没有用大括号括起来。
所以就是5个值了。为什么会是这几个值呢?
这个i的值只能是0了。因为第一个for循环没有循环体。它根本就没执行。
恰恰起到了一个申明变量i的作用。想想这样说是否可以。应该也就是这个意思吧。
第2个回答  2009-10-23
循环变量i、j从0开始,小于等于order。order的值是5,那么i、j可取到5。而a数组行列都是5,最大小标只到4。所以输出完5这个值,j下标为5了,就产生下标越界异常了。
代码中的2个<=都改成<即可。
第3个回答  推荐于2016-07-31
这样遍历才对:

for(int[] i:a){
for(int j:i){
System.out.print(j);
}
System.out.println();
}本回答被提问者采纳
第4个回答  2009-10-24
不能等于order,数组下标从0开始,数组长度减一结束。