Java基础练习题5--[给定一段字符串,将里面的信息进行提取,(注意:需要考虑信息是可变的)String s=“张三:上机成绩=90,笔试成绩=78“+“李四:上机成绩=68,笔试成绩......]

Posted 小智RE0

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础练习题5--[给定一段字符串,将里面的信息进行提取,(注意:需要考虑信息是可变的)String s=“张三:上机成绩=90,笔试成绩=78“+“李四:上机成绩=68,笔试成绩......]相关的知识,希望对你有一定的参考价值。

题目:给定一段字符串,将里面的信息进行提取,(注意:需要考虑信息是可变的)
String s = “张三:上机成绩=90,笔试成绩=78;”
+ “李四:上机成绩=68,笔试成绩=98;”
+ “王五:上机成绩=48,笔试成绩=58;”
+ “赵六:上机成绩=55,笔试成绩=11;”
+ “杰克:上机成绩=44,笔试成绩=55;”
+ “贾克斯:上机成绩=22,笔试成绩=55;”
要求:将每个学生信息,提取出来后存入一个学生对象中.
将多个学生对象存入一个学生数组中.
按照总分进行升序显示输出.


创建学生类

//这里需要实现Comparable接口;
public class Student implements Comparable<Student>{
    //定义属性
    //name:姓名;
    private String name;
    //上机成绩sjGrade;
    private int sjGrade;
    //笔试成绩bsGrade;
    private int bsGrade;
    //总分sum;
    private int sum;
    //有参构造方法
    public Student(String name, int sjGrade, int bsGrade, int sum) {
        this.name = name;
        this.sjGrade = sjGrade;
        this.bsGrade = bsGrade;
        this.sum = sum;
    }
    //无参构造方法
    public Student() {

    }
    //重写compareTO方法;
    //实际在sort()方法的底层调用compare方法
    //定义按总分sum的升序输出;
    @Override
    public int compareTo(Student o) {
        return this.sum-o.sum;
    }
    //重写的toString方法;
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\\'' +
                ", sjGrade=" + sjGrade +
                ", bsGrade=" + bsGrade +
                ", sum=" + sum +
                '}';
    }

    //提供的获取和设置私有属性的方法;
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getSjGrade() {
        return sjGrade;
    }

    public void setSjGrade(int sjGrade) {
        this.sjGrade = sjGrade;
    }

    public int getBsGrade() {
        return bsGrade;
    }

    public void setBsGrade(int bsGrade) {
        this.bsGrade = bsGrade;
    }

    public int getSum() {
        return sum;
    }

    public void setSum(int sum) {
        this.sum = sum;
    }
}

Demo类

import java.util.Arrays;
/**
 7.给定一段字符串,将里面的信息进行提取,(注意:需要考虑信息是可变的)
 String s =  "张三:上机成绩=90,笔试成绩=78;"
 + "李四:上机成绩=68,笔试成绩=98;"
 + "王五:上机成绩=48,笔试成绩=58;"
 + "赵六:上机成绩=55,笔试成绩=11;"
 + "杰克:上机成绩=44,笔试成绩=55;"
 + "贾克斯:上机成绩=22,笔试成绩=55;"
 要求:将每个学生信息,提取出来后存入一个学生对象中.
 将多个学生对象存入一个学生数组中.
 按照总分进行升序显示输出
 */
public class Demo {
    public static void main(String[] args) {
        String s =  "张三:上机成绩=90,笔试成绩=78;"
                  + "李四:上机成绩=68,笔试成绩=98;"
                  + "王五:上机成绩=48,笔试成绩=58;"
                  + "赵六:上机成绩=55,笔试成绩=11;"
                  + "杰克:上机成绩=44,笔试成绩=55;"
                  + "贾克斯:上机成绩=22,笔试成绩=55;";
        //取出学生信息,存到String类的数组;
        String[] str=s.split(";");
        //System.out.println(Arrays.toString(str));
        //[张三:上机成绩=90,笔试成绩=78, 李四:上机成绩=68,笔试成绩=98, 王五:上机成绩=48,笔试成绩=58, 赵六:上机成绩=55,笔试成绩=11, 杰克:上机成绩=44,笔试成绩=55, 贾克斯:上机成绩=22,笔试成绩=55]
        //创建学生数组,长度为String数组的长度;
        Student[] stu=new Student[str.length];
        //在String数组遍历截取部分信息放到Student数组中;
        for (int i = 0; i < str.length; i++) {
            //把String数组str的每个元素遍历时赋值给字符串s1
            String s1=str[i];
            //System.out.println(s1);
            //张三:上机成绩=90,笔试成绩=78
            //李四:上机成绩=68,笔试成绩=98
            //王五:上机成绩=48,笔试成绩=58
            //赵六:上机成绩=55,笔试成绩=11
            //杰克:上机成绩=44,笔试成绩=55
            //贾克斯:上机成绩=22,笔试成绩=55
            //然后在s1中进行截取信息;使用substring()方法截取得到新的字符串;
            //注意substring截取时,区间是左闭合右开放的;
            //截取name:
            String name=s1.substring(0,s1.indexOf(":"));
            //截取上机成绩和笔试成绩:
            //这里用Integer的parseInt方法将字符串转为基本类型的int;
            int sjGrade=Integer.parseInt(s1.substring(s1.indexOf("=")+1,s1.indexOf(",")));
            int bsGrade=Integer.parseInt(s1.substring(s1.lastIndexOf("=")+1));
            //得到总分sum:
            int sum=sjGrade+bsGrade;
            //新建Student类的对象,传入参数;
            Student student=new Student(name,sjGrade,bsGrade,sum);
            //将Student类引用变量的值赋给学生类的数组元素;
            stu[i]=student;
        }
        System.out.print("按照总分的升序排序为:");
        //使用Arrays类的sort排序方法;
        Arrays.sort(stu);
        //输出得到按总分升序:
        System.out.println(Arrays.toString(stu));
//按照总分的升序排序为:[Student{name='赵六', sjGrade=55, bsGrade=11, sum=66}, Student{name='贾克斯', sjGrade=22, bsGrade=55, sum=77}, Student{name='杰克', sjGrade=44, bsGrade=55, sum=99}, Student{name='王五', sjGrade=48, bsGrade=58, sum=106}, Student{name='李四', sjGrade=68, bsGrade=98, sum=166}, Student{name='张三', sjGrade=90, bsGrade=78, sum=168}]

    }
}

以上是关于Java基础练习题5--[给定一段字符串,将里面的信息进行提取,(注意:需要考虑信息是可变的)String s=“张三:上机成绩=90,笔试成绩=78“+“李四:上机成绩=68,笔试成绩......]的主要内容,如果未能解决你的问题,请参考以下文章

给定一组带有线段的点,找到等距的点

java基础练习题

java基础练习题

请问如何在python中实现等待指定一段时间?

R语言基础函数练习

python基础练习题