2 回答

TA貢獻1875條經驗 獲得超5個贊
您不是在創建新的數組類型,而是在創建一個包含數組的類。因此PrimitiveArray intArray[],又名 a PrimitiveArray[],并不完全是您想要的。它只是一個普通的PrimitiveArray,它已經表示包含數組字段的東西。
public class PrimitiveArray {
int[] internal; //this data should be accessed through a method, encapsulation
public PrimitiveArray(int amount) {
this.internal = new int[amount];
}
}
public class Main {
public static void main(String[] args) {
Random rand = new Random();
PrimitiveArray intArray = new PrimitiveArray(5);
//this may do well in the constructor, which you can pass your random to
for (int i = 0; i < intArray.internal.length; i++){
intArray.internal[i] = rand.nextInt();
}
}
}

TA貢獻2080條經驗 獲得超4個贊
讓我們從 開始PrimitiveArray,有一個intArray字段對同一包的成員可見(這有點奇怪);通常你會做到的private。你還沒有給出PrimitiveArray一個length字段。您需要訪問和更改intArray. 然后,我相信您可能會發現覆蓋toString()是輸出值的簡單方法。就像是,
public class PrimitiveArray {
private int[] intArray;
public int length;
public PrimitiveArray(int amount) {
this.length = amount;
this.intArray = new int[amount];
}
public void set(int i, int v) {
if (i >= 0 && i < length) {
this.intArray[i] = v;
}
}
public int get(int i) {
if (i >= 0 && i < length) {
return this.intArray[i];
}
return -1;
}
public String toString() {
return Arrays.toString(intArray);
}
}
最后,在調用它時;你不需要一個PrimitiveArray(s) 數組,并且需要使用類似上面的getandset方法(因為 Java 沒有運算符重載)。就像是,
public static void main(String[] args) {
Random rand = new Random();
PrimitiveArray intArray = new PrimitiveArray(5);
for (int i = 0; i < intArray.length; i++) {
intArray.set(i, rand.nextInt());
}
System.out.println(intArray);
}
PS,正如@Tom在評論中指出的那樣,盡管我最初這樣做是為了滿足您的原始代碼;length不應該是一個public字段,也應該通過方法來訪問。喜歡,
public class PrimitiveArray {
private int[] intArray;
public int length() {
return intArray.length;
}
和
for (int i = 0; i < intArray.length(); i++) {
添加回答
舉報