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);