寒假Java学习Day9:

今天终于通过朋友(ID:weixin_52939031)的全程帮助下写出了学生排名输出的功能。

所以学生排名输出功能代码是他写的(我就参与个理解):

public static void list(){
        BufferedReader br=null;
        String temp;
        int i=0;
        System.out.println("学生成绩排名");
        try {

            br=new BufferedReader(new FileReader("C:\\Users\\86130\\IdeaProjects\\text2\\student.txt"));
            while((temp= br.readLine())!=null){
                String a[]=temp.split("\t");
                if(i==0)
                {
                    i++;
                    continue;
                }
                // 保存一个学生的数据
                Stu stu = new Stu(Integer.parseInt(a[0].trim()), a[1], Integer.parseInt(a[2].trim()),
                                 Integer.parseInt(a[3].trim()), Integer.parseInt(a[4].trim()), Double.parseDouble(a[5].trim()));
                arrayList.add(stu); //添加到集合中
            }
            Collections.sort(arrayList); //排序
            i=0;
            System.out.println("排名\t\t学号\t姓名\tja\tpy\tc\t总分");
            // 遍历输出有序集合
            for (Stu stu : arrayList) {
                i++;
                System.out.println("第"+i+"名"+"\t"+stu.id + "\t" + stu.name + "\t" + stu.java + "\t" + stu.python + "\t" + stu.c + "\t" + stu.sum);
            }


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

然后从中也学到空指针异常和属性转换异常的原因和修改的方法。

后来我自己尝试了用数组的方法来按照他的原理去写,emmm半成功吧,最后困在了排序的方面上。改代码真是件要命的事情。

以下就是我的半成功的代码了:

public static void alist(){
        BufferedReader br=null;
        String temp;
        Stu change= new Stu();
        Stu [] ap=new Stu[1000];
        int i=0,j=0;
        Stu student = new Stu();
        System.out.println("学生成绩排名");

        int len=0;
        for(i=0;i<1000;i++)
        {
            ap[i]=new Stu();
        }
        i=0;
        try {
            br=new BufferedReader(new FileReader("C:\\Users\\86130\\IdeaProjects\\text2\\student.txt"));
            while((temp= br.readLine())!=null){
                String a[]=temp.split("\t");
//                if(i==0)
//                {
//                    i=1;
//                    continue;
//                }
                student.id= Integer.parseInt(a[0].trim());
                student.name=a[1];
                student.java= Integer.parseInt(a[2].trim());
                student.python=Integer.parseInt(a[3].trim());
                student.c=Integer.parseInt(a[4].trim());
                student.sum=Double.parseDouble(a[5].trim());
                ap[i++]=student;
                len++;
        }
            for(i=0;i<len;i++)
            {
                for(j=i;j<len;j++)
                {
                    if(ap[i].sum>ap[j].sum)
                    {
                        change=ap[i];
                        ap[i]=ap[j];
                        ap[j]=change;
                    }
                }
            }
            for(i=0;i<len;i++)
            {
                System.out.println("第"+(i)+"名"+"\t"+ap[i].name+"\t"+ap[i].java+"\t"+ap[i].python+"\t"+ap[i].c);
            }

    } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值