A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Kindom 中级黑马   /  2015-3-20 22:06  /  2325 人查看  /  25 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Kindom 于 2015-3-20 22:10 编辑

/*
需求:将二维数组行列互换例如:
1 2 3        1 4 7
4 5 6   →  2 5 8
7 8 9        3 6 9
*/
public class Arryhh
{
        //遍历打印数组模块
        public static void bl(int[][] arr)
        {
                for(int x=0;x<arr.length;x++)
                {
                        for(int j=0;j<arr[x].length;j++)
                        {
                                System.out.print("  "+arr[x][j]);
                        }
                        System.out.println();
                }
        }
        //数组行列互换模块
        public static int [][] hh(int[][] arr)
                {
                        int brr[][]=new int[3][3];
                        for(int x=0;x<arr.length;x++)
                        {
                                for(int j=0;j<arr[x].length;j++)
                                {
                                                brr[j][x]=arr[x][j];//行列互换后存入brr。
                           ↑↑这里可不可以不用另外设置一个接收数组,直接在该数组内操作?
                                }
                        }
                        return brr;//返回二维数组brr。
                }
        


        public static void main(String args[])
        {
                int arr[][]={{1,2,3},{4,5,6},{7,8,9}};
                System.out.println("\n原数组arr为:");
                bl(arr);
                System.out.println("………………");
                System.out.println("行列互换后:");
                bl(hh(arr));
        }
}

25 个回复

倒序浏览
我不会的  你会骂我吗
回复 使用道具 举报
123.java 发表于 2015-3-20 22:11
我不会的  你会骂我吗

:L。。。。那我们就等大牛来给讲解下
回复 使用道具 举报
顶起来~~~~~~~~~
回复 使用道具 举报
给你顶一下吧
回复 使用道具 举报
牛,我暂时还没学你这样扎实兄弟
回复 使用道具 举报
给你顶一下吧
回复 使用道具 举报
Kindom 中级黑马 2015-3-20 22:33:30
8#

好的,谢啦~;P
回复 使用道具 举报
Kindom 中级黑马 2015-3-20 22:34:42
9#
邹璐 发表于 2015-3-20 22:30
牛,我暂时还没学你这样扎实兄弟

:L我是那天正好看到这个题。。。。就想了下
回复 使用道具 举报
看起来略显高大上啊
回复 使用道具 举报
唯一能做的 就是默默地为你顶一下
回复 使用道具 举报

不客气,该顶就得顶啊
回复 使用道具 举报
Hksangs 发表于 2015-3-20 22:35
看起来略显高大上啊

。。。。。。。:(谢顶楼了
回复 使用道具 举报
我是main 发表于 2015-3-20 22:37
唯一能做的 就是默默地为你顶一下

:hug:谢谢~
回复 使用道具 举报
Imp_x 高级黑马 2015-3-20 22:43:50
15#
本帖最后由 Imp_x 于 2015-3-20 22:45 编辑

很简单的啊  找规律 左上到右下的对角线的元素是不变  以这条对角线对称交换数值  我简单写下代码
for(int x=0;x<arr.length;x++){
   for(int y=0;y<arr[x].length;y++){
      if(x!=y){      int temp =arr[x][y];
      arr[x][y]=arr[y][x];
      arr[y][x]=temp;
      }
   }
]

点评

嗯,谢啦,看懂啦。。。哈哈  发表于 2015-3-20 23:11
回复 使用道具 举报
bztf 中级黑马 2015-3-20 22:45:04
16#
package test_1;

public class Test {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
                int arr[][] = {{1,2,3},{4,5,6},{7,8,9}};
                for(int i = 0;i<arr.length;i++)
                {
                        for(int j = 0;j<arr[i].length;j++)
                                System.out.print(arr[i][j]);
                        System.out.println();
                }
                System.out.println("------------------------------------");
                for(int q = 0;q<arr.length;q++)
                {
                        for(int w = 0;w<arr[q].length;w++)
                                System.out.print(arr[w][q]);
                        System.out.println();
                }
               
        }

}

点评

恩,很棒,但是不是我想要的。你这个只是伪置换,只是输出打印效果达到了,但是数组本身还是那个数组,没变。  发表于 2015-3-20 22:51
回复 使用道具 举报
感觉不行,肯定交换时得要一个临时存储的地方才行呃.
回复 使用道具 举报

  1. public class testarray {
  2.         public static void main(String[]args)
  3.         {
  4.                 int[][]array={{1,2,3},{4,5,6},{7,8,9}};
  5.                 Sort(array);
  6.                
  7.         }

  8.         public static void  Sort(int[][]array)
  9.         {
  10.                 for(int i=0;i<3;i++)
  11.                 {
  12.                         int temp=0;
  13.                         for(int j=0;j<i;j++)
  14.                         {
  15.                                 temp=array[i][j];
  16.                                 array[i][j]=array[j][i];
  17.                                 array[j][i]=temp;
  18.                         }
  19.                 }
  20.                 show(array);
  21.         }
  22.         public static void show(int[][]array)
  23.         {
  24.                 for(int i=0;i<3;i++)
  25.                 {
  26.                         for(int j=0;j<3;j++)
  27.                         {
  28.                                 System.out.print(array[i][j]);
  29.                         }
  30.                         System.out.println();
  31.                 }
  32.         }
  33. }
复制代码
回复 使用道具 举报 2 0
山里孩子 发表于 2015-3-20 22:48
感觉不行,肯定交换时得要一个临时存储的地方才行呃.

恩,我的办法笨。两个数组必然占的空间要比一个数组大。就想着用一个数组,再用临时变量存
回复 使用道具 举报
不用再设置另一个数组啊,你写的就对。因为,看第一行和第一列,他们的元素如下:
a[0][0] = 1; a[0][1]= 2;a[0][2]=3; a[1][0]=4;a[2][0]=7;
通过他们的角标就可以发现规律,一维角标和二维角标互换,就是结果。

点评

嗯,我刚开始学,开始没弄明白  发表于 2015-3-20 23:15
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马