Java 交换矩阵的两列
我已经给出了一个二维数组(矩阵)和两个数字:I和j。我的目标是在矩阵中用索引i和j交换列。输入包含矩阵维数n和m,不超过100,然后是矩阵元素,然后是指数i和j 我猜问题的根源与引用变量有关?我试着将第15行替换为Java 交换矩阵的两列,java,Java,我已经给出了一个二维数组(矩阵)和两个数字:I和j。我的目标是在矩阵中用索引i和j交换列。输入包含矩阵维数n和m,不超过100,然后是矩阵元素,然后是指数i和j 我猜问题的根源与引用变量有关?我试着将第15行替换为 int nextValue = scanner.nextInt(); matrix[i][j] = nextValue; swap[i][j] = nextValue; 但输出仍然保持不变 import java.util.Scanner; public class Main {
int nextValue = scanner.nextInt();
matrix[i][j] = nextValue;
swap[i][j] = nextValue;
但输出仍然保持不变
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int row = scanner.nextInt();
int column = scanner.nextInt();
int[][] matrix = new int[row][column];
int[][] swap = matrix.clone();
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
matrix[i][j] = scanner.nextInt();
}
}
int c0 = scanner.nextInt();
int c1 = scanner.nextInt();
for (int i = 0; i < row; i++) {
swap[i][c0] = matrix[i][c1];
swap[i][c1] = matrix[i][c0];
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
System.out.print(swap[i][j] + " ");
}
System.out.println();
}
}
}
3和4代表矩阵的行数和列数,下面三行定义矩阵的元素,最后一行告诉程序哪些列可以交换
预期产出:
12 11 13 14
22 21 23 24
32 31 33 34
实际产量:
12 12 13 14
22 22 23 24
32 32 33 34
看起来您的交换逻辑已关闭。如果您想交换两个变量,例如
a
和b
,那么这里有一个在Java中工作的模式:
int a = 5;
int b = 10;
int temp = a;
a = b;
b = temp;
将此逻辑应用于矩阵列交换,我们可以尝试以下更新的代码:
int c0 = scanner.nextInt();
int c1 = scanner.nextInt();
for (int i=0; i < row; i++) {
int temp = matrix[i][c0];
matrix[i][c0] = matrix[i][c1];
matrix[i][c1] = temp;
}
int c0=scanner.nextInt();
int c1=scanner.nextInt();
对于(int i=0;i|
看起来您的交换逻辑已关闭。如果您想交换两个变量,例如a
和b
,那么这里有一个在Java中工作的模式:
int a = 5;
int b = 10;
int temp = a;
a = b;
b = temp;
将此逻辑应用于矩阵列交换,我们可以尝试以下更新的代码:
int c0 = scanner.nextInt();
int c1 = scanner.nextInt();
for (int i=0; i < row; i++) {
int temp = matrix[i][c0];
matrix[i][c0] = matrix[i][c1];
matrix[i][c1] = temp;
}
int c0=scanner.nextInt();
int c1=scanner.nextInt();
对于(int i=0;i|
非常感谢@Tim Biegeleisen
这个代码对我有用:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int row = scanner.nextInt();
int column = scanner.nextInt();
int [][] matrix = new int[row][column];
int [][] swap = matrix.clone();
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
matrix[i][j] = scanner.nextInt();}}
int c0 = scanner.nextInt();
int c1 = scanner.nextInt();
for (int i=0; i < row; i++) {
int temp = matrix[i][c0];
matrix[i][c0] = matrix[i][c1];
matrix[i][c1] = temp;
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
System.out.print(swap[i][j]+" "); }
System.out.println();}
}
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
int row=scanner.nextInt();
int column=scanner.nextInt();
int[][]矩阵=新int[行][列];
int[]swap=matrix.clone();
对于(int i=0;i|
非常感谢@Tim Biegeleisen
这个代码对我有用:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int row = scanner.nextInt();
int column = scanner.nextInt();
int [][] matrix = new int[row][column];
int [][] swap = matrix.clone();
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
matrix[i][j] = scanner.nextInt();}}
int c0 = scanner.nextInt();
int c1 = scanner.nextInt();
for (int i=0; i < row; i++) {
int temp = matrix[i][c0];
matrix[i][c0] = matrix[i][c1];
matrix[i][c1] = temp;
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
System.out.print(swap[i][j]+" "); }
System.out.println();}
}
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
int row=scanner.nextInt();
int column=scanner.nextInt();
int[][]矩阵=新int[行][列];
int[]swap=matrix.clone();
对于(int i=0;i|
在您的程序中,逻辑错误是:
看到我的代码了吗
import javax.sound.sampled.Line;
import java.util.Arrays;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// put your code here
int i = scanner.nextInt();
int j = scanner.nextInt();
int[][] matrix = new int[i][j];
for (int y = 0; y < i; y++) {
for (int x = 0; x < j; x++) {
matrix[y][x] = scanner.nextInt();
}
}
int swap1 = scanner.nextInt();
int swap2 = scanner.nextInt();
for (int[] arr : matrix) {
int temp = arr[swap1];
arr[swap1] = arr[swap2];
arr[swap2] = temp;
for (int el : arr) {
System.out.print(el + " ");
}
System.out.println();
}
}
}
import javax.sound.sampled.Line;
导入java.util.array;
导入java.util.Scanner;
班长{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
//把你的代码放在这里
int i=scanner.nextInt();
int j=scanner.nextInt();
int[][]矩阵=新的int[i][j];
对于(int y=0;y
在您的程序中,逻辑错误是:
看到我的代码了吗
import javax.sound.sampled.Line;
import java.util.Arrays;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// put your code here
int i = scanner.nextInt();
int j = scanner.nextInt();
int[][] matrix = new int[i][j];
for (int y = 0; y < i; y++) {
for (int x = 0; x < j; x++) {
matrix[y][x] = scanner.nextInt();
}
}
int swap1 = scanner.nextInt();
int swap2 = scanner.nextInt();
for (int[] arr : matrix) {
int temp = arr[swap1];
arr[swap1] = arr[swap2];
arr[swap2] = temp;
for (int el : arr) {
System.out.print(el + " ");
}
System.out.println();
}
}
}
import javax.sound.sampled.Line;
导入java.util.array;
导入java.util.Scanner;
班长{
公共静态void main(字符串[]args){
扫描仪=新的扫描仪(System.in);
//把你的代码放在这里
int i=scanner.nextInt();
int j=scanner.nextInt();
int[][]矩阵=新的int[i][j];
对于(int y=0;y
可能感兴趣可能感兴趣我的答案是否有问题导致您不接受?我的答案是否有问题导致您不接受?