Java:更改已建立的数组

时间:2015-10-22 05:39:22

标签: arrays java

所以我编写的代码将更改数组的元素,并打印出特定目标之后的数字。在这种情况下,目标是数字4.

意味着如果我的原始数组包含数字 5 6 4 3 2 1 新数组只包含3 2 1,因为它们是数字4之后的数字。

我将这一切都放在一个方法中,到目前为止,我的代码打印出4之后的数字,但一遍又一遍地打印相同的数字,我不知道如何保持打印后面的元素

    boolean four;
    int location = 0;

    four = contains(newArray, 4);
    if (four == false) { // this returns the same array if there is no 4 
        return newArray;
    } else {
        for (int i = 0; i < newArray.length; i++) {
            if (newArray[i] == 4) {
               location = i;
            }
        }
        for (int j = 0; j < newArray.length; j++) {
            newArray[j] = newArray[location + 1];
        }
        return newArray;
    }

2 个答案:

答案 0 :(得分:1)

您也可以使用System.arraycopy这样的原生实现

for (int i = 0; i < arr.length; i++) {
    if (arr[i] == 4) {
        location = i;
        break;
    }
}
int[] out = new int[arr.length-location-1];
System.arraycopy(arr, location+1, out, 0, arr.length-location-1);
return out;

答案 1 :(得分:0)

您应该创建一个新数组,因为您无法更改数组的长度:

   for (int i = 0; i < newArray.length; i++) {
       if(newArray[i] == 4) {
           location = i;
           break;
       }
   }  
   int [] arr = new int[newArray.length - location - 1];
   for(int j = 0; j < arr.length; j++) {
        arr[j] = newArray[location+1+j]; 
   }
   newArray = arr;