Java 元件开关有问题吗

Java 元件开关有问题吗,java,arrays,Java,Arrays,所以我试着做一个元素切换。基本上在二维数组中切换两个元素。我没有得到任何错误,但它只是不工作的权利,甚至没有打印所有的元素。我做错了什么。这是代码 public class ArrayTheory { public static void printArray(int[][]args) { for(int i=0;i<args.length; i++) for(int j=0;j<args.length; j++) {

所以我试着做一个元素切换。基本上在二维数组中切换两个元素。我没有得到任何错误,但它只是不工作的权利,甚至没有打印所有的元素。我做错了什么。这是代码

public class ArrayTheory
{
    public static void printArray(int[][]args)
    {
        for(int i=0;i<args.length; i++)
            for(int j=0;j<args.length; j++) {
                System.out.print(args[i][j]);
            }   
            System.out.println();
    }

    public static void arraySwitch(int c1, int c2, int [][]args)
    {
        for(int i=0;i<args.length; i++)
            for(int j=0;j<args.length; j++) {
                int temp = args[i][c1];
                args[i][c1] = args[i][c2];
                args[i][c1] = temp;
            }   
    }
}

由于数组不是正方形,您需要使用
args[0]。length
args[i]。length
对第二维度进行索引,如果每行的长度不同。

您的问题不是很清楚。如果要交换两个特定元素,则需要四个坐标(a1、a2)和(b1、b2)来寻址每个元素。您的代码似乎试图交换两行。您的打印方法看起来不错,只是外部循环没有大括号。因此,在打印完2D数组的全部内容后,println()只执行一次。

arraySwitch

        int temp = args[i][c1];
        args[i][c1] = args[i][c2];
        args[i][c1] = temp;  <<<<<<< bug

请向我们提供您获得的输出和您期望的结果,此外,您还有@FDinoffYes的答案中描述的错误,这不仅是切换元素时的问题,也是打印阵列时的问题。
        int temp = args[i][c1];
        args[i][c1] = args[i][c2];
        args[i][c1] = temp;  <<<<<<< bug
        args[i][c2] = temp;