你這個的程序,只能成功運行 n*n的情況,也就是行數(shù)和列數(shù)相等的二維數(shù)組才能成功。
創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都網(wǎng)站設(shè)計、做網(wǎng)站服務(wù),網(wǎng)站設(shè)計,網(wǎng)站托管維護等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對手中脫穎而出創(chuàng)新互聯(lián)建站。
如果 n*m 也就是行數(shù)和列數(shù)不相同的情況就可能出錯。
因為 n*m 是沒有對角線的,也就是 i = j不一定出現(xiàn)在對角線上,所以出現(xiàn)了你上面的問題。
pre t="code" l="java"思路:
1、首先聲明一個6行5列的數(shù)組
2、先循環(huán)行,再循環(huán)列,再賦值為隨機數(shù)(使用 Random 類)
3、再遍歷
代碼如下:
public static void main(String[] args) {
//聲明一個6行5列的數(shù)組
int[][] array=new int[6][5];
for(int i=0,j=array.length;ij;i++){
for(int h=0,k=array[i].length;hk;h++){
array[i][h]=new Random().nextInt(100); //賦值:100以內(nèi)的隨機數(shù)
}
}
//遍歷
for(int i=0,j=array.length;ij;i++){
System.out.println();
for(int h=0,k=array[i].length;hk;h++){
System.out.print(array[i][h]+"\t");
}
}
}
只需對上三角或者下三角進行循環(huán),樓主這樣相當于循環(huán)了2遍,行列互換后,有列行呼喚,又換回來了::)改正如下:
for(int i=0;iarray.length;i++)
for(int j+1;jarray.length;j++)
{
//行列互換
temp=array[i][j];
array[i][j]=array[j][i];
array[j][i]=temp;//為什么array[0][1],array[0][2]賦值不過來,分別還是2,3???不明白!
}
二維數(shù)組的行列值互換,又叫矩陣的轉(zhuǎn)置,數(shù)組a轉(zhuǎn)置后應(yīng)該是1,4;2,5;3,6;
完整的矩陣轉(zhuǎn)置的Java程序如下
按照你的要求輸出1,2;4,5;3,6;的程序
第一個方法是把換行后數(shù)組結(jié)果保存在一個新數(shù)組里,第二個方法對原數(shù)組沒有半點操作,只是打印時按照換行后的方法打印而已(所以此方法打印看下效果可以,但是要是用來其它計算或操作就沒什么卵用)