我正在嘗試將一個帶有值的陣列添加到一個已經有一個值的現有陣列中。我的方法是創建一個新陣列,其長度為現有陣列的長度 我要添加的值的長度。然后我將遍歷整個陣列并將值添加到新陣列的索引中。我的方法是這樣的:
public void addValues(int[] values) {
int[] array = new int[data.length values.length];
for(int i = 0; i < array.length; i ) {
array[i] = values;
}
data = array;
}
其中“資料”是已經存在的陣列我的方法由于多種原因而失敗,
- 我無法轉換“陣列 [i] = 值”
- 我沒有“舊”陣列的值
我想不出解決方案
uj5u.com熱心網友回復:
您走在正確的軌道上:您需要分配一個可以容納所有資料的新陣列。但在那之后,您需要將現有資料復制到新陣列中,然后是值:
private int[] data; // assuming this exists somewhere
public void addValues(int[] values) {
int[] array = new int[data.length values.length];
for (int i = 0; i < data.length; i ) {
array[i] = data[i];
}
for (int i = 0; i < values.length; i ) {
array[data.length i] = values[i];
}
data = array;
}
實際上你甚至可以使用一些方法來減少代碼大小:
public void addValues(int[] values) {
int[] array = new int[data.length values.length];
System.arraycopy(data, 0, array, 0, data.length);
System.arraycopy(values, 0, array, data.length, values.length);
data = array;
}
uj5u.com熱心網友回復:
data.length values.length拋出例外,Index out of bound因為array.length > values.length. 您想將陣列宣告為static因為您的陣列在方法之外并且您想在方法內部使用它,例如array[i] = data[i]
這里可能的解決方案:
public static int data[] = { 2, 3, 4, 5, 7, 8 };
public static void addValues() {
int[] array = new int[data.length];
for (int i = 0; i < array.length; i ) {
array[i] = data[i];
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342667.html
上一篇:在id相同的陣列中添加值
