元素切换有问题

时间:2013-04-24 14:07:07

标签: java arrays

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您在arraySwitch

的内部循环中的代码中存在错误
        int temp = args[i][c1];
        args[i][c1] = args[i][c2];
        args[i][c1] = temp;  <<<<<<< bug

那应该是

        args[i][c2] = temp;

答案 2 :(得分:0)

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