我已经能够解决大部分问题。但是我的输出总是抛出异常。我敢肯定这是次要的事情,但是我似乎无法弄清楚如何正确地完成这项工作。我包括了例外,任务原本是对我说的,以及到目前为止的代码:
使用公式数组[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("");
}
}
}
如果仅将其旋转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("");
}