1

所以我正在尝试进行元素切换。基本上切换二维数组中的两个元素。我没有收到任何错误,但它只是无法正常工作,甚至没有打印所有元素。我究竟做错了什么。这是代码。

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;
            }   
    }
}

这里是元素

public class TestArray {
    public static void main(String[] args){
        int[][] test = {{1,2,3,4},
                        {1,2,3,4},
                        {1,2,3,4}};


        int[][] carData = {{16,2008,4},
                           {45,2011,4},
                           {26,2010,7},
                           {18,2009,8}};

        ArrayTheory.arraySwitch(0,2,test);
        ArrayTheory.printArray(test);
    }
}
4

3 回答 3

1

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

于 2013-04-24T14:17:37.690 回答
1

您的代码中的内部循环中有一个错误arraySwitch

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

那应该是

        args[i][c2] = temp;
于 2013-04-24T14:19:55.847 回答
0

你的问题不是很清楚。如果您尝试交换两个特定元素,则需要四个坐标 (a1, a2) 和 (b1, b2) 来处理每个元素。您的代码似乎试图交换两行。您的打印方法看起来不错,除了您的外循环没有大括号。所以你的 println() 只会在二维数组的全部内容被打印后执行一次。

于 2013-04-24T14:18:41.107 回答