首页 > 解决方案 > 数组不复制另一个数组

问题描述

我正在尝试开发一个程序来删除数组中的所有中值(如果它有奇数个元素,则为中间值,如果它有偶数个元素,则为两个中间值),直到只剩下两个元素,元素 [0] 和 [1]。例如,如果用户输入 1, 2, 3, 4, 5,程序将返回 [1, 5]。我记下了我认为在逻辑上可能会有所帮助的内容,但是我的数组 x 没有在 for 循环中复制 myArray 。我不是在寻找完全为我编写代码的人,只是为了指出我错在哪里。这是我的代码:

import java.util.*;
public class Deletion
{
   public static void main(String[]args)
   {
      Scanner kb = new Scanner(System.in);
      System.out.println("Please enter the array length:");
      int [] myArray = new int[kb.nextInt()];
      int [] x = new int[myArray.length - 1];
      int index1 = 0;
      int index2 = 0;
      int index3 = 0;
      if(myArray.length < 3)
      {
         System.out.println("Please make sure array length is greater than two. Run again.");
         System.exit(0);
      }
      else
      {
         for(int i = 0; i < myArray.length; i++)
         {
            System.out.println("Please enter a number for position " + i + ":");
            myArray[i] = kb.nextInt();
         }
         for(int i = 0; i < myArray.length; i++)
         {
            while(myArray.length > 2)
            {
               if(myArray.length%2 != 0)
               {
                  index1 = (myArray.length/2);
                  for(int j = 0, r = 0; j < myArray.length; j++)
                  {
                     if(j != index1)
                     {
                        x[r++] = myArray[j];
                        myArray = x;
                     }
                  }
                  x = new int[myArray.length - 1];
               }
               else
               {
                  index2 = (myArray.length/2);
                  index3 = (myArray.length/2 - 1);
                  for(int j = 0, r = 0; j < myArray.length; j++)
                  {
                     if(j != index2 && j != index3)
                     {
                        x[r++] = myArray[j];
                        myArray = x;
                     }
                  }
                  x = new int[myArray.length - 1];
               }
            }
         }
      }
      System.out.println(Arrays.toString(myArray));
   }
}

标签: javaarraysfor-loop

解决方案


您必须创建数组并填充它,否则它使用相同的内存地址,因此将不起作用。使用以下内容:

myArray = ArrayUtils.clone(x);

推荐阅读