2 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
您不是在創(chuàng)建新的數(shù)組類型,而是在創(chuàng)建一個(gè)包含數(shù)組的類。因此PrimitiveArray intArray[],又名 a PrimitiveArray[],并不完全是您想要的。它只是一個(gè)普通的PrimitiveArray,它已經(jīng)表示包含數(shù)組字段的東西。
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貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
讓我們從 開始PrimitiveArray,有一個(gè)intArray字段對(duì)同一包的成員可見(這有點(diǎn)奇怪);通常你會(huì)做到的private。你還沒有給出PrimitiveArray一個(gè)length字段。您需要訪問和更改intArray. 然后,我相信您可能會(huì)發(fā)現(xiàn)覆蓋toString()是輸出值的簡(jiǎn)單方法。就像是,
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);
}
}
最后,在調(diào)用它時(shí);你不需要一個(gè)PrimitiveArray(s) 數(shù)組,并且需要使用類似上面的getandset方法(因?yàn)?Java 沒有運(yùn)算符重載)。就像是,
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在評(píng)論中指出的那樣,盡管我最初這樣做是為了滿足您的原始代碼;length不應(yīng)該是一個(gè)public字段,也應(yīng)該通過方法來訪問。喜歡,
public class PrimitiveArray {
private int[] intArray;
public int length() {
return intArray.length;
}
和
for (int i = 0; i < intArray.length(); i++) {
添加回答
舉報(bào)