在多维数组中交换值

时间:2015-01-17 08:48:58

标签: java arrays multidimensional-array

我目前正在解决一个问题,我需要根据条件交换多维数组中的值。输入的例子:

2 3

4 5

5 2

6 25

上述元素是4行2列的数组(列= 2是固定的)。 如果列的值大于行中的值,则不必更改任何内容,否则值应互换。

请在下面找到我的代码:

int c = 2;
int temp1, temp2;
Scanner in = new Scanner(System.in);
System.out.println("Enter 'n': ");
n = in.nextInt();

int[][] arr = new int[n][c];

if (n <= 15) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < c; j++) {
            System.out.println("Enter values into md-array: ");
            arr[i][j] = in.nextInt();
        }
    }
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < c; j++) {
            if (arr[i][j] < arr[i][j + 1]) {
                System.out.println(arr[i][j]);
            } else {
                temp2 = i; //swapping
                i = j;
                j = temp2;

                temp1 = j;
                j = i;
                i = temp1;

                System.out.println(arr[i][j]);
            }
        }
    }
}

当我尝试使用上面的代码时,我可以将元素写入数组,但是我无法执行交换操作,也无法执行初始比较操作。我也面对IndexOutOfBoundsException。我无法纠正这个问题。

1 个答案:

答案 0 :(得分:0)

试试这个:

    int c=2;
        int temp1, temp2;
        Scanner in = new Scanner(System.in);
        System.out.println("Enter 'n': ");
        int n = in.nextInt();

        int[ ][ ] arr = new int[n][c];

        if (n<=15) {
            for(int i=0; i<n;i++) {
                for (int j=0;j<c;j++) {
                    System.out.println("Enter values into md-array: ");
                    arr[i][j]=in.nextInt();
                    }   
            }
            System.out.println("====================================================");
            for(int i[]: arr){
                for(int j: i){
                    System.out.print(j+"   ");
                }
                System.out.println("");
            }
            System.out.println("====================================================");
            for(int i=0; i<n;i++) {
                for (int j=0;j<c-1;j++) {
                  if (arr[i][j]<arr[i][j+1]) {
//                      System.out.println(arr[i][j]);      
                  }
                  else {
                      temp2=arr[i][j]; //swapping
                      arr[i][j]=arr[i][j+1];
                      arr[i][j+1]=temp2;

//                      System.out.println(arr[i][j]);
                  }
                }
            }
            for(int i[]: arr){
                for(int j: i){
                    System.out.print(j+"   ");
                }
                System.out.println("");
            }
        }

现在检查。我检查过它的工作原理。我输入的样本数据是:

3   4   
4   4   
5   3   
1   7 

出来是:

3   4   
4   4   
3   5   
1   7