重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你这个的程序,只能成功运行 n*n的情况,也就是行数和列数相等的二维数组才能成功。
创新互联建站网站建设服务商,为中小企业提供成都网站设计、做网站服务,网站设计,网站托管维护等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联建站。
如果 n*m 也就是行数和列数不相同的情况就可能出错。
因为 n*m 是没有对角线的,也就是 i = j不一定出现在对角线上,所以出现了你上面的问题。
pre t="code" l="java"思路:
1、首先声明一个6行5列的数组
2、先循环行,再循环列,再赋值为随机数(使用 Random 类)
3、再遍历
代码如下:
public static void main(String[] args) {
//声明一个6行5列的数组
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以内的随机数
}
}
//遍历
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");
}
}
}
只需对上三角或者下三角进行循环,楼主这样相当于循环了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???不明白!
}
二维数组的行列值互换,又叫矩阵的转置,数组a转置后应该是1,4;2,5;3,6;
完整的矩阵转置的Java程序如下
按照你的要求输出1,2;4,5;3,6;的程序
第一个方法是把换行后数组结果保存在一个新数组里,第二个方法对原数组没有半点操作,只是打印时按照换行后的方法打印而已(所以此方法打印看下效果可以,但是要是用来其它计算或操作就没什么卵用)