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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谷文仁 中级黑马   /  2013-4-2 16:30  /  1971 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 谷文仁 于 2013-4-2 21:39 编辑

把数组前面的二维数组替换成后面的数组求方法
1  2  3
4  5  6
7  8  9
换为
1  4  7
2  5  8
3  6  9

image036.jpg (9.83 KB, 下载次数: 9)

前面替换成后面的

前面替换成后面的

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

6 个回复

倒序浏览
思想就是看角标
newarr[0][0]=arr[0][0]    ----->1
newarr[0][1]=arr[1][0]    ----->4
newarr[0][2]=arr[2][0]    ----->7
newarr[1][0]=arr[0][1]    ----->2
正好是新数组的角标和旧数组角标一维和二维换了个位置。
代码就出来了 如下:
  1. class  ArrayTest4
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[][] arr={{1,2,3},{4,5,6},{7,8,9}};
  6.                 int[][] newArr=new int[3][3];
  7.                 for(int x=0;x<3;x++)
  8.                 {
  9.                         for (int y=0;y<3;y++ )
  10.                         {
  11.                                 newArr[x][y] =arr[y][x];
  12.                         }
  13.                 }
  14.                 for(int x=0;x<3;x++)
  15.                 {
  16.                         for (int y=0;y<3;y++ )
  17.                         {
  18.                                 System.out.print(newArr[x][y]);
  19.                         }
  20.                         System.out.println();
  21.                 }
  22.         }
  23. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
你的意思是要让数组旋转吗?
  1. public static void change(int[][] array,int n){
  2.                 int temp;
  3.                 for(int i=0;i<n;i++){
  4.                         for(int j=i+1;j<n;j++){
  5.                                 temp=array[i][j];
  6.                                 array[i][j]=array[j][i];
  7.                                 array[j][i]=temp;
  8.                                
  9.                         }
  10.                 }
  11.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
public class Tihuan {

        /**
         * @param args
         */
        public static void main(String[] args) {
               
                int may[][]={{1,2,3},{4,5,6},{7,8,9}};
                for(int i=0;i<may.length;i++){
                        for(int j=0;j<may[i].length;j++){
                                System.out.print(may[i][j]);
                        }
                        System.out.println();
                }

        }

}
以上创建类Tihuan。创建并初始化数组may。输出结果为
1  2  3
4  5  6
7  8  9
将上面的)System.out.print(may[i][j]);改为System.out.print(may[j][i]);输出结果:
1  4  7
2  5  8
3  6  9

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
其实二维数组和一维没有什么太大的区别,也是根据
角标找元素,只不过是原来只用一个数字表示角标,现在
换成俩个数字表示而已,其实就和你看地图坐标意思差不多
class  ArrayDemo
{
        public static void main(String[] args)
        {
                int[][] a={{1,2,3},{4,5,6},{7,8,9}};
                int[][] abc=new int[3][3];//定义一个有三个一维数组的二维数组,
                                          //且每个数组长度为3
               /*开始交换,原理就是a数组的a[0][0]角标赋值给abc[0][0],
                a[0][2]赋值给abc[2][0],a[1][0]赋值给abc[0][1]
                因此可以看出有俩个for循环就可以搞定
                for(int z=0;z<3;z++)
                {
                        for (int i=0;i<3;i++ )
                        {
                                abc[z][i] =a[i][z];
                        }
                }
                //遍历输出
                for(int z=0;z<3;z++)
                {
                        for (int i=0;i<3;i++ )
                        {
                                System.out.print(newArr[z][i]);
                        }
                        System.out.println();
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报

  1.         public static void main(String args[]){
  2.           int arr[][] =new int[][]{{1,2,3},{4,5,6},{7,8,9}};
  3.           //int a1[][] = new int[3][3];
  4.           int a1[][] =  new int[arr.length][];//把转换好的数据放到这数组里
  5.           a1[0] = new int[arr[0].length];
  6.           a1[1] = new int[arr[1].length];
  7.           a1[2] = new int[arr[2].length];
  8.           
  9.           for(int i=0;i<arr.length;i++){
  10.                   for(int j = 0;j<arr[i].length;j++){
  11.                           int m = arr[i][j];
  12.                           a1[j][i]=m;//交换位置只要把里面的i j换一下就可以了
  13.                   }
  14.           }
  15.           
  16.           //便历
  17.           for(int i=0;i<a1.length;i++){
  18.                   for(int j = 0;j<a1[i].length;j++){
  19.                           int m = a1[i][j];
  20.                           System.out.print(""+m+" ");
  21.                   }
  22.                   System.out.println();
  23.           }
  24.           
  25.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
数学上的转置
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马