多维数组-顺时针旋转90度(Java)

问题描述 投票:-3回答:1

我已经能够解决大部分问题。但是我的输出总是抛出异常。我敢肯定这是次要的事情,但是我似乎无法弄清楚如何正确地完成这项工作。我包括了例外,任务原本是对我说的,以及到目前为止的代码:

使用公式数组[j] [n-1-i]我得到以下异常:线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:长度为4的索引-1超出范围在com.company.Main.main(Main.java:20)

如果我使用array [j] [n-i]我没有例外,但这不是正确的输出顺序。

一直坚持这个星期!任何帮助将不胜感激!

给出一个大小为n×m的矩形数组。通过将结果记录到大小为m×n的新数组中,将其顺时针旋转90度。

输入数据格式

[输入不超过100的两个数字n和m,然后输入大小为n×m的数组。

输出数据格式

输出结果数组。在输出中用单个空格分隔数字。

样本输入1:

3 4

11 12 13 14

21 22 23 24

31 32 33 34

样本输出1:

31 21 11

32 22 12

33 23 13

34 24 14

class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int[][] array = new int[n][m];

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                array[i][j] = scanner.nextInt();
            }
        }
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                System.out.print(array[j][n - 1 - i] + " ");
            }
            System.out.println("");
        }

    }
}
java multidimensional-array
1个回答
0
投票

如果仅将其旋转90度,则只是在左右移动列的同时从行尾开始到开头。因此您的代码应该只是

for (int col = 0 ; col < m; col++) {
   for (int row = n-1; row >= 0; row--) {
       System.out.print(array[row][col] + " ");
   }
   System.out.println("");
}
© www.soinside.com 2019 - 2024. All rights reserved.