集合-ArrayList

Nice、简单 2019-01-23 07:12:14
//欢迎指点
public class Test_Student {

public static void main(String[] args) {

List list = new ArrayList();
list.add(new Student("Tom",18,100,"class05"));
list.add(new Student("Jerry",22,70,"class04"));
list.add(new Student("Owen",25,90,"class05"));
list.add(new Student("Jim",30,80,"class05"));
list.add(new Student("Steve",28,66,"class06"));
list.add(new Student("Kevin",24,100,"class04"));
System.out.println(list.toString());
Iterator ite = list.iterator();
int age[] = new int [list.size()];

int ageCount = 0; //所有人的总年龄
int num = 0;//统计总的学生人数
for(int i=0;i<age.length;i++)
{
Student x = (Student)ite.next();
age[i]= x.getAge();
ageCount += age[i];
num++;
}
System.out.println("平均年龄为;"+(ageCount/num));

//double[] score = new double[list.size()];

//计算各班级的平均分
double class05Score = 0;//class05总成绩
int class05Num = 0;//class05总人数
double class04Score = 0;//class04总成绩
int class04Num = 0;//class04总人数
double class06Score = 0;//class06总成绩
int class06Num = 0;//class06总人数

for(int i=0;i<list.size();i++)
{

if("class05".equals(((Student)list.get(i)).getClassNum()))//判断是否为class05班
{

class05Score += ((Student)list.get(i)).getScore();
class05Num++;
}
else if("class04".equals(((Student)list.get(i)).getClassNum()))//判断是否为class04班
{

class04Score += ((Student)list.get(i)).getScore();
class04Num++;
}
else
{
//score[i] = ((Student)list.get(i)).getScore();
class06Score += ((Student)list.get(i)).getScore();
class06Num++;
}
}
System.out.println("class04班平均分为:"+(class04Score/class04Num));
System.out.println("class05班平均分为:"+(class05Score/class05Num));
System.out.println("class06班平均分为:"+(class06Score/class06Num));





}
}

...全文
234 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiao_lone 2019-01-25
  • 打赏
  • 举报
回复
不考虑业务,for循环可以合并,(Student)list.get(i)可以抽取。代码可以优化一下
  • 打赏
  • 举报
回复
Iterator ite = list.iterator();
int age[] = new int [list.size()];

for(int i=0;i<age.length;i++)
{
************
}
迭代器提供了方法遍历hasNext(),这种遍历方式我还是第一次见用在迭代器身上

if("class05".equals(((Student)list.get(i)).getClassNum()))//判断是否为class05班
{

class05Score *****
}
else if("class04".equals(((Student)list.get(i)).getClassNum()))//判断是否为class04班
{

class04Score *****
}
else
{
class06Score ***
}
至于这个if else是多余的。因为你三个班级的计算逻辑是一样的,就不用写三遍,可以用list去赋值,减少冗余代码

在简化一点,你平均年龄跟成绩都是平均,所以也算是冗余逻辑,可以提取出来一个计算平均值的方法
x_xf 2019-01-24
  • 打赏
  • 举报
回复
关于集合的运算之前有捯饬到一段时间,不过结果是好的,总算搞出来了,怕忘记就写了一片帖子,有兴趣可以看看http://c.raqsoft.com.cn/article/1542508403539?r=sln
java-小学生 2019-01-24
  • 打赏
  • 举报
回复
迭代器用的有点多余啊。

51,395

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧