【问题标题】:How do i Swap Data of an Arrays?如何交换数组的数据?
【发布时间】:2013-09-20 08:45:02
【问题描述】:
   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 的数据。希望有人能解释一下谢谢!

【问题讨论】:

  • 上面的代码不行!
  • 基本.... temp=b; b=a; a=temp;

标签: java arrays swap jcreator


【解决方案1】:

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

你不应该,基本上。只需走一个临时变量的simple路线:

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

【讨论】:

  • java.util.Arrays: 有什么作用? Arrays.toString 的作用是什么?
  • @Joey:你读过文档吗?哪一点你不清楚?
  • 先生有哪些文件?
  • 是否可以交换 String 和 Int 的数据 .. 像 x 将是 String [] x = {Dog, Cat, Mouse, Bird, Rabbit};和 int[] y = { 15, 60, 23, 10, 100 };
  • @Joey:java.util.Arrays.toString 的文档。不,您不能交换 String[]int[] 的内容 - int[] 不能保存字符串引用,String[] 不能保存 int...
【解决方案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;

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

【讨论】:

    【解决方案3】:

    如果你想交换数组中的数字,你可以这样做:

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

    【讨论】:

      【解决方案4】:
       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]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-29
        • 2019-05-15
        • 1970-01-01
        • 1970-01-01
        • 2020-09-06
        • 1970-01-01
        相关资源
        最近更新 更多