1. java封裝屬性 數組
這段代碼也是醉了,你存入list應該是一個對象Person,
而你給一組數組賦值我也是沒搞懂你的意思,
你這樣寫代碼能存入list集合的只是一個Person對象,而你給對象欄位賦值的語句就只有p.name = s.next();p.pingjun = (rr / (a.length - 1)) + "";,只有2個屬性付了值,其他的沒有賦值是null;
一個構造器給Person的數組賦值?一個長度20的字元空數組,然後你給w數組賦值,那麼你這樣子賦值你以為可以影響到Person的值?w[i] = u + "";這句代碼,與Person對象沒半毛錢關系,對象引用都沒有怎麼賦值,
你最後列印的是Person對象的欄位,而你存入一個空數組,然後把string類型欄位的原始屬性給一個數組,Person(String r[]) {
r[1] = this.yuwen;
r[2] = this.shuxve;
r[3] = this.wuli;
r[4] = this.waiyu;
r[5] = this.huaxve;
}
這有啥用,我很好奇你這個r數組也不是類中的欄位,你給他付了null的值,你給他傳入的是長度20的數組,後面還有15個長度呢,不管這個,關鍵是這個數組啥用也沒有除了浪費內存
下面這段代碼中list.add(p);,你把Person 對象存入list,此時的Person 對象被賦值的就只有2個欄位,你給w,r數組的值無法影響到Person 對象,且這個方法執行完畢後,也會被清理掉因為沒有被引用到
這個時候可以回答你的問題了,為什麼你輸入的分數顯示都是null:
因為他都沒被賦值到Person 的成員變數上面,沒被賦值的成員變數的String值是null,容易你列印Person 未被賦值的成員變數的值,就是null;
String r[] = new String[a.length - 2];
String w[] = new String[20];
int rr = 0;
Person p = new Person(w);
p.name = s.next();
for (int i = 1; i < a.length - 1; i++) {
int u = s.nextInt();
w[i] = u + "";
r[i - 1] = u + "";
rr += u;
}
p.pingjun = (rr / (a.length - 1)) + "";
list.add(p);