2
   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

4 回答 4

3

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

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

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

对于整数,您实际上可以使用没有临时变量的算术交换数组中的值(这交换变量引用的数组不同),但实际上发现自己处于您想要做的情况会很奇怪那。示例代码:

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,但上面的代码只是为了证明一点......

于 2013-09-20T08:49:42.853 回答
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;

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

于 2013-09-20T08:51:24.370 回答
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;
      }
 }
于 2013-09-20T08:54:43.260 回答
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]);
于 2013-09-20T08:51:23.743 回答