Думаю, вы написали addInt
что-то вроде этого:
void addInt(int[] a, int n){
int[] newArray = new int[a.length+1];
System.arraycopy(a, 0, newArray, 0, a.length);
newArray[a.length] = n;
a = newArray; // WRONG!
}
Параметры метода в Java передаются значением , что в основном означает, что a
в addInt
и [ 116] в вызове addInt(a1, 2)
две отдельные переменные. При входе в addInt
, a
первоначально относится к тому же массиву, что и a1
, но кроме этого нет дальнейших отношений между a
и a1
, и впоследствии изменение a
для ссылки на что-то еще не имеет эффект на a1
.
Ваша единственная возможность - изменить addInt
так, чтобы он возвращал новый массив как результат функции:
int[] addInt(int[] a, int n){
int[] newArray = new int[a.length+1];
System.arraycopy(a, 0, newArray, 0, a.length);
newArray[a.length] = n;
return newArray;
}
, а затем вызывать его так:
a1 = addInt(a1, 2);
Просто для пояснения: