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,笔试成绩......]的主要内容,如果未能解决你的问题,请参考以下文章