java集合练习

1.题目要求:

有如下Student 2对象,

 private String name;  

  private int age;  

private int score;  

private String classNum;

其中,classNum 表示学生的班号,例如“class05”。 有如下

List List list = new ArrayList();

list.add(new Student2(“Tom”, 18, 100, “class05”));  

list.add(new Student2(“Jerry”, 22, 70, “class04”));

list.add(new Student2(“Owen”, 25, 90, “class05”));

list.add(new Student2(“Jim”, 30,80 , “class05”));

list.add(new Student2(“Steve”, 28, 66, “class06”));

list.add(new Student2(“Kevin”, 24, 100, “class04”));

在这个list 的基础上,完成下列要求:

1) 计算所有学生的平均年龄

2) 计算各个班级的平均分

2.解题思路

(1)我们需要创建一个Student类,该类包含nameagescore,和classNum这四个属性,并为每个属性提供getter和setter方法。

(2)创建一个Demo类,导入Student类,在这个Demo类中,我们创建一个ArrayList来存储Student对象,并使用之前提供的数据填充这个列表。

(3):计算所有学生的平均年龄,可以遍历Student2列表,将每个学生的年龄加起来,然后除以学生的总数。

(4):计算各个班级的平均分,根据学生类的classNum属性,区分不同班级,根据区分到的班级叠加总分和记录学生数量,在整体学生遍历完后,在分别除以对应学生总数,从而得到各班的平均分。

import java.sql.Array;
import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) {
        /*
        在这个list 的基础上,完成下列要求:
        1) 计算所有学生的平均年龄
        2) 计算各个班级的平均分
        * */
        int allAge=0;
        int[] score04=new int[2];
        int[] score05=new int[2];
        int[] score06=new int[2];
        List list = new ArrayList<>();
        list.add(new Student2("Tom", 18, 100, "class05"));
        list.add(new Student2("Jerry", 22, 70, "class04"));
        list.add(new Student2("Owen", 25, 90, "class05"));
        list.add(new Student2("Jim", 30,80 ,"class05"));
        list.add(new Student2("Steve", 28, 66, "class06"));
        list.add(new Student2("Kevin", 24, 100,"class04"));

        for (int i = 0; i < list.size(); i++) {
            Student2 stu= (Student2) list.get(i);
            allAge+=stu.getAge();
        }
        System.out.println("所有学生的平均年龄是:"+allAge/ list.size());

        for (int i = 0; i < list.size(); i++) {
            Student2 stu= (Student2) list.get(i);
            if (stu.getClassNum().equals("class04"))
            {
                score04[0]+=stu.getScore();
                score04[1]++;
            }
            if (stu.getClassNum().equals("class05"))
            {
                score05[0]+=stu.getScore();
                score05[1]++;
            }
            if (stu.getClassNum().equals("class06"))
            {
                score06[0]+=stu.getScore();
                score06[1]++;
            }
        }
        float score1=(float)score04[0]/score04[1];
        float score2=(float)score05[0]/score05[1];
        float score3=(float)score06[0]/score06[1];
        System.out.println("class04的平均成绩是"+String.format("%.2f",score1)+"\nclass05的平均成绩是"+String.format("%.2f",score2)+"\nclass06的平均成绩是"+String.format("%.2f",score3));


    }
}

3.代码主要使用方法记录:

(1)浮点数的小数保留

String的format方法

double f = 111231.5585;

System.out.println(String.format("%.2f", f));

(2)字符串的比较

使用.equals()方法:当需要比较两个字符串的内容是否相同时,应该使用String类的equals()方法。这是一个逻辑比较,它检查两个字符串的字符序列是否相同,而不考虑字符串中的对象引用是否相同

4.改进

在本题的循环遍历中,采用普通的for循环,可以改为for增强循环。在此之前,需注意集合的创建需改为:  List<Student2> list = new ArrayList<Student>();

原因解释:如果list是一个List<?>或List<Object>,那么增强for循环中的循环变量必须是Object类型,因为List<?>和List<Object>可以包含任何类型的对象。所以使用原来的集合创建方法会无法使用对应Student2的for增强遍历方法。

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值