黑马程序员技术交流社区

标题: 关于数组的问题,同学们来指教下 [打印本页]

作者: Kindom    时间: 2015-3-20 22:06
标题: 关于数组的问题,同学们来指教下
本帖最后由 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));
        }
}


作者: 123.java    时间: 2015-3-20 22:11
我不会的  你会骂我吗
作者: Kindom    时间: 2015-3-20 22:15
123.java 发表于 2015-3-20 22:11
我不会的  你会骂我吗

:L。。。。那我们就等大牛来给讲解下
作者: 若辰    时间: 2015-3-20 22:18
顶起来~~~~~~~~~
作者: 陈浩通    时间: 2015-3-20 22:30
给你顶一下吧
作者: 邹璐    时间: 2015-3-20 22:30
牛,我暂时还没学你这样扎实兄弟
作者: 陈浩通    时间: 2015-3-20 22:33
给你顶一下吧
作者: Kindom    时间: 2015-3-20 22:33
陈浩通 发表于 2015-3-20 22:30
给你顶一下吧

好的,谢啦~;P
作者: Kindom    时间: 2015-3-20 22:34
邹璐 发表于 2015-3-20 22:30
牛,我暂时还没学你这样扎实兄弟

:L我是那天正好看到这个题。。。。就想了下
作者: Hksangs    时间: 2015-3-20 22:35
看起来略显高大上啊
作者: 我是main    时间: 2015-3-20 22:37
唯一能做的 就是默默地为你顶一下
作者: 陈浩通    时间: 2015-3-20 22:37
Kindom 发表于 2015-3-20 22:33
好的,谢啦~

不客气,该顶就得顶啊
作者: Kindom    时间: 2015-3-20 22:37
Hksangs 发表于 2015-3-20 22:35
看起来略显高大上啊

。。。。。。。:(谢顶楼了
作者: Kindom    时间: 2015-3-20 22:39
我是main 发表于 2015-3-20 22:37
唯一能做的 就是默默地为你顶一下

:hug:谢谢~
作者: Imp_x    时间: 2015-3-20 22:43
本帖最后由 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;
      }
   }
]


作者: bztf    时间: 2015-3-20 22:45
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:48
感觉不行,肯定交换时得要一个临时存储的地方才行呃.
作者: 木子轩    时间: 2015-3-20 22:53

  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. }
复制代码

作者: Kindom    时间: 2015-3-20 22:56
山里孩子 发表于 2015-3-20 22:48
感觉不行,肯定交换时得要一个临时存储的地方才行呃.

恩,我的办法笨。两个数组必然占的空间要比一个数组大。就想着用一个数组,再用临时变量存
作者: 夜班心桥    时间: 2015-3-20 23:09
不用再设置另一个数组啊,你写的就对。因为,看第一行和第一列,他们的元素如下:
a[0][0] = 1; a[0][1]= 2;a[0][2]=3; a[1][0]=4;a[2][0]=7;
通过他们的角标就可以发现规律,一维角标和二维角标互换,就是结果。
作者: Kindom    时间: 2015-3-20 23:10
木子轩 发表于 2015-3-20 22:53

:handshake:handshake太感谢了。。。
作者: 和谐木马    时间: 2015-3-20 23:51
就相当于在数组中交换两个数嘛,排序那里不是一堆交换数的思想,然后再套入你的二维数组的循环中!
作者: 邹璐    时间: 2015-3-26 08:45
牛逼顶下你的帖子兄弟!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2