Java 交换矩阵的两列

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 {

我已经给出了一个二维数组(矩阵)和两个数字: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 {

    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
可能感兴趣可能感兴趣我的答案是否有问题导致您不接受?我的答案是否有问题导致您不接受?