我如何得到这个二维数组,以向右旋转90度? [英] How do I get this 2D Array to rotate to the right 90 degrees?

查看:320
本文介绍了我如何得到这个二维数组,以向右旋转90度?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以,我有一个二维数组,并且它应该是向右旋转90度,而是它旋转到左边。实在想不通,为什么

公共类裂缝$ C $ {C16

 公共静态无效的主要(字符串ARGS []){
    INT [] [] oldarray =新INT [3] [3];    int值= 1;    的for(int i = 0;我3;;我++){
        为(中间体J = 0; J&下; 3; J ++){
            oldarray [I] [J] =价值;
            价值++;
        }
    }
    的for(int i = 0;我3;;我++){
        为(中间体J = 0; J&下; 3; J ++){
            System.out.print(oldarray [I] [J] +\\ t的);
        }
        的System.out.println();
    }
    oldarray =旋转(oldarray,3);
    的System.out.println();
    的for(int i = 0;我3;;我++){
        为(中间体J = 0; J&下; 3; J ++){
            System.out.print(oldarray [I] [J] +\\ t的);
        }
        的System.out.println();
    }}公共静态INT [] []旋转(INT [] [] passedIn,INT N){    INT [] [] newarray =新的INT [n] [n]的;    的for(int i = 0; I< N;我++){
        对于(INT J = 0; J< N; J ++){
            newarray [I] [j]的= passedIn [j]的[n-1个-1];
        }
    }    返回newarray;
}

}

输出:

1 2 3结果
4 5 6结果
7 8 9

3 6 9结果
2 5 8结果
1 4 7


解决方案

  newArray [I] [J] = passedIn [N-1-J] [I];

而不是

  newarray [I] [J] = passedIn [J] [N-1-I]

此外,与Java8工作时,你可能会考虑使用来打印数组:

  Stream.of(oldarray).forEach(E  - >的System.out.println(Arrays.toString(E)));

So I have a 2D array, and it is supposed to rotate to the right 90 degrees, but instead it rotates to the left. Really can't figure out why

public class CrackCode16 {

public static void main (String args[]){
    int [] [] oldarray = new int [3][3];

    int value = 1;

    for (int i = 0; i < 3; i++){
        for (int j =0; j<3; j++){
            oldarray[i][j] = value;
            value++;
        }
    }


    for (int i = 0; i < 3; i++){
        for (int j =0; j<3; j++){
            System.out.print(oldarray[i][j] + "\t");
        }
        System.out.println("");
    }


    oldarray = rotate(oldarray, 3);


    System.out.println("");
    for (int i = 0; i < 3; i++){
        for (int j =0; j<3; j++){
            System.out.print(oldarray[i][j] + "\t");
        }
        System.out.println("");
    }

}

public static int [][] rotate (int [][] passedIn, int n){

    int [][] newarray = new int [n][n];

    for (int i = 0; i < n; i++){
        for (int j =0; j<n; j++){
            newarray[i][j] = passedIn [j][n-1-i];
        }
    }   

    return newarray;
}

}

Output:

1 2 3
4 5 6
7 8 9

3 6 9
2 5 8
1 4 7

解决方案

newArray[i][j] = passedIn [n-1-j][i];

instead of

newarray[i][j] = passedIn [j][n-1-i];

Additionally, when working with Java8, you might consider using a Stream to print your array:

Stream.of(oldarray).forEach(e -> System.out.println(Arrays.toString(e)));

这篇关于我如何得到这个二维数组,以向右旋转90度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆