Как изменить размер массивов в Java?

Я не мог заставить ничего для меня работать, но это:

adb shell
run-as package.name
cat /databases/databaseFileName.db > /sdcard/copiedDatabaseFileName.db
exit
exit
adb pull /sdcard/copiedDatabaseFileName.db /file/location/on/computer/

. Первый выход - выйти из режима run-as, второй выход - выйти из оболочки adb сделать тягу.

-2
задан JavaNiceDay 6 April 2019 в 23:48
поделиться

2 ответа

Вы не можете изменить длину массива. когда вы создаете массив типа int [] fixedLEngthArray = new int [n], вы в основном зарезервировали память для n int. если вам нужно n + 1, вам нужно будет создать новый массив, в который скопировать старый и вставить / удалить элемент.

0
ответ дан Andrei-Nicolae Grosu 6 April 2019 в 23:48
поделиться

Думаю, вы написали 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);
0
ответ дан Kevin Anderson 6 April 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: