我如何交换数组的数据?

时间:2013-09-20 08:45:03

标签: java arrays swap jcreator

   public class Swap_Numbers {

       public static void main(String[] args) {


              int numTens[] = {1, 2, 3, 4, 5}; // First array of numbers
              int numHundred[] = {100, 200, 300, 400, 500}; //Second Array of Numbers


       System.out.println (numTens[3]); // I want my numTens displays numHundred
       System.out.println (numHundred[4]); // I want my numHundred displays numTens
  }
 }

我只是不知道我应该使用什么代码来交换numTens和numHundred的数据而不使用额外的变量..希望有些人可以解释我多么感谢!

4 个答案:

答案 0 :(得分:3)

  

我只是不知道我应该用什么代码来交换numTens和numHundred的数据而不使用额外的变量

基本上你不应该。只需采用临时变量的简单路由:

int[] tmp = numTens;
numTens = numHundred;
numHundred = tmp;

对于int,你可以实际使用算术交换数组中的值而不使用临时变量(与交换变量所引用的数组相同),但是实际上发现自己处于想要这样做的状态是很奇怪的。示例代码:

import java.util.Arrays;

public class Test { 

    public static void main(String[] args) {
        int[] x = { 1, 2, 3, 4, 5 };
        int[] y = { 15, 60, 23, 10, 100 };

        swapValues(x, y);
        System.out.println("x: " + Arrays.toString(x));
        System.out.println("y: " + Arrays.toString(y));
    }

    static void swapValues(int[] a, int[] b) {
        // TODO: Validation
        for (int i = 0; i < a.length; i++) {
            a[i] += b[i];
            b[i] = a[i] - b[i];
            a[i] -= b[i];
        }
    }
}

即使在那里,我也会实际使用临时变量来编写swapValues,但上面的代码只是为了证明一点......

答案 1 :(得分:2)

为此,我假设两个阵列的大小相同。然后你可以这样做:

for (int i = 0; i < numTens.length; i++)
{
    numTens[i] = numTens[i] + numHundred[i];      // statement 1
    numHundred[i] = numTens[i] - numHundred[i];   // statement 2
    numTens[i] = numTens[i] - numHundred[i];      // statement 3
}

让我们取两个数组的第二个元素

Ten[2] = 3;
Hundred[2] = 300;
-------------------------------------
Ten[2] = 303    // after statement 1
Hundred[2] = 3  // after statement 2
Ten[2] = 300    // after statement 3
-------------------------------------
Ten[2] = 300;
Hundred[2] = 3;

在不使用临时变量的情况下交换值。

答案 2 :(得分:1)

如果要交换数组中的数字,可以执行以下操作:

 void swap(int[] arr1, int[] arr2)
 {
      //if parameters are as bellow 
      //arr1 = {1, 2, 3, 4, 5};
      //arr2 = {10, 20, 30, 40, 50};


      if(arr1.length == arr2.length)
      {
           for(int i =0; i < arr1.length ; i++)
           {
                arr1[i] = arr1[i] + arr2[i];
                arr2[i] = arr1[i] - arr2[i];
                arr1[i] = arr1[i] - arr2[i];
           }
      }
      else
      {
           throw new IllegalArgumentException;
      }
 }

答案 3 :(得分:0)

 int numTens[] = {1, 2, 3, 4, 5}; // First array of numbers
 int numHundred[] = {100, 200, 300, 400, 500}; //Second Array of Numbers

 for (int i = 0; i < numTens.length; i++) {
      numHundred[i] = numTens[i];
      numTens[i] = numTens[i]*100;
 }

 System.out.println (numTens[3]); 
 System.out.println (numHundred[4]);