如何交换 java 二维数组中具有特定索引的列?
How do I swap columns with a specific indexes in java 2d arrays?
所以我一直在努力解决以下问题:
给定一个二维数组(矩阵)和两个数字:i 和 j。在矩阵中交换索引为 i 和 j 的列。
输入包含矩阵维度n和m,不超过100,然后是矩阵的元素,然后是索引i和j。
示例输入 1:
- 3 4
- 11 12 13 14
- 21 22 23 24
- 31 32 33 34
- 0 1
示例输出 1:
- 12 11 13 14
- 22 21 23 24
- 32 31 33 34
为了解决这个问题,我写了下面的代码:
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"java.lang.ArrayIndexOutOfBoundsException:索引 11 在长度 4 处超出范围 Main.main(Main.java:15).
可能是什么问题及其解决方案?
线程 "main" java.lang.ArrayIndexOutOfBoundsException 中出现异常:索引 11 在 Main.main(Main.java:15) 处超出长度 4 的范围。
以上错误是因为您直接将值读入 i 和 j 但您忘记了在矩阵 [][] 中设置值,正如 vince 和 jim 在评论中所说。
使用循环设置值
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();
}
}
}
所以我一直在努力解决以下问题:
给定一个二维数组(矩阵)和两个数字:i 和 j。在矩阵中交换索引为 i 和 j 的列。
输入包含矩阵维度n和m,不超过100,然后是矩阵的元素,然后是索引i和j。
示例输入 1:
- 3 4
- 11 12 13 14
- 21 22 23 24
- 31 32 33 34
- 0 1
示例输出 1:
- 12 11 13 14
- 22 21 23 24
- 32 31 33 34
为了解决这个问题,我写了下面的代码:
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"java.lang.ArrayIndexOutOfBoundsException:索引 11 在长度 4 处超出范围 Main.main(Main.java:15).
可能是什么问题及其解决方案?
线程 "main" java.lang.ArrayIndexOutOfBoundsException 中出现异常:索引 11 在 Main.main(Main.java:15) 处超出长度 4 的范围。
以上错误是因为您直接将值读入 i 和 j 但您忘记了在矩阵 [][] 中设置值,正如 vince 和 jim 在评论中所说。
使用循环设置值
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();
}
}
}