所以我编写的代码将更改数组的元素,并打印出特定目标之后的数字。在这种情况下,目标是数字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;
}
答案 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;