所以我一直在尝试解决以下问题:
给出一个二维数组(矩阵)和两个数字:i和j。交换矩阵中索引为i和j的列。
输入包含不超过100的矩阵尺寸n和m,然后是矩阵的元素,然后是索引i和j。
样本输入1:
样本输出1:
为了解决它,我编写了以下代码:
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int rows = scanner.nextInt();
int tables = scanner.nextInt();
int[][] matrix = new int[rows][tables];
int i = scanner.nextInt();
int j = scanner.nextInt();
for (int w = 0; w < rows; w++){
int temp = matrix[w][i];
matrix[w][i] = matrix[w][j];
matrix[w][j] = temp;
}
System.out.print(matrix);
}
}
并且错误是线程“ main”中的Exception java.lang.ArrayIndexOutOfBoundsException:在Main.main(Main.java:15)的长度为4的索引11越界。
可能是什么问题和解决方案?
线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:Main.main(Main.java:15)处索引4的长度4超出范围。
以上错误是因为您未在matrix [] [];]中设置值。
使用循环设置值
for(int k=0;k<rows;k++){ for(int l=0;l<cols;l++){ matrix[k][l]=scanner.nextInt(); } }
然后遍历行以交换值
代码在这里
实时:https://onlinegdb.com/rJJ-kMTUL
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int rows = scanner.nextInt();
int cols = scanner.nextInt();
int[][] matrix = new int[rows][cols];
for(int k=0;k<rows;k++){
for(int l=0;l<cols;l++){
matrix[k][l]=scanner.nextInt();
}
}
int i = scanner.nextInt();
int j = scanner.nextInt();
for(int k=0;k<rows;k++){
int temp = matrix[k][i];
matrix[k][i] = matrix[k][j];
matrix[k][j]=temp;
}
for(int k=0;k<rows;k++){
for(int l=0;l<cols;l++){
System.out.print( matrix[k][l]+" ");
}
System.out.println();
}
}
}