黑马程序员技术交流社区
标题:
录入学生成绩,按平均分输出
[打印本页]
作者:
fmi110
时间:
2015-9-2 14:41
标题:
录入学生成绩,按平均分输出
sf
package test_treeSet;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;
public class StudentDemo {
/**
* 键盘录入3个学生成绩,按总分高低输出
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//建立TreeSet集合,可自定义比较器,保证元素唯一和排序
TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>(){
@Override
public int compare(Student s1, Student s2) {
// int result = (int)(s1.getTotal() - s2.getTotal());//学生总分比较
int result = (int)(s1.getAverage() - s2.getAverage());//平均分排序
result = (int)(result==0?s1.getChinese()-s2.getChinese():result);
result = (int)(result==0?s1.getMath()-s2.getMath():result);
result = (int)(result==0?s1.getEnglish()-s2.getEnglish():result);
if(result==0){
result = s1.getName().compareTo(s2.getName());
}
return result;
}
});
for (int i = 1; i < 4; i++) {
System.out.println("请输入第"+i+"个学生的成绩,格式为:姓名 语文 数学 英语:");
String str = new Scanner(System.in).nextLine();
String[] s = str.split("\\s+");//正则表达式切割字符串 至少一个空格
Student s1 = new Student(s[0],Double.parseDouble(s[1]), Double.parseDouble(s[2]),
Double.parseDouble(s[3]));
ts.add(s1);
}
//遍历输出学生信息
System.out.println("姓名\t语文\t数学\t英语\t总分\t平均分");
for(Student s:ts){
System.out.println(s.getName()+"\t"+s.getChinese()+"\t"+s.getMath()+
"\t"+s.getEnglish()+"\t"+s.getTotal()+"\t"+s.getAverage());
}
}
}
package test_treeSet;
/**
* 创建学生类,包含姓名,语文、数学、英文成绩
* */
public class Student {
private String name;
private double chinese;
private double math;
private double english;
public String getName() {
return name;
}
public Student(String name, double chinese, double math, double english) {
super();
this.name = name;
this.chinese = chinese;
this.math = math;
this.english = english;
}
public void setName(String name) {
this.name = name;
}
public double getChinese() {
return chinese;
}
public void setChinese(double chinese) {
this.chinese = chinese;
}
public double getMath() {
return math;
}
public void setMath(double math) {
this.math = math;
}
public double getEnglish() {
return english;
}
public void setEnglish(double english) {
this.english = english;
}
//获取总分数
public double getTotal(){
return chinese + math + english ;
}
//获取平均分
public double getAverage(){
return this.getTotal()/3;
}
}
复制代码
作者:
fmi110
时间:
2015-9-2 14:43
运行结果
请输入第1个学生的成绩,格式为:姓名 语文 数学 英语:
ads 89 88 8
请输入第2个学生的成绩,格式为:姓名 语文 数学 英语:
fds 87 76 78
请输入第3个学生的成绩,格式为:姓名 语文 数学 英语:
fs 99 88 77
姓名 语文 数学 英语 总分 平均分
ads 89.0 88.0 8.0 185.0 61.666666666666664
fds 87.0 76.0 78.0 241.0 80.33333333333333
fs 99.0 88.0 77.0 264.0 88.0
作者:
asinzuo
时间:
2015-9-2 15:29
平均分这么长真的好么
作者:
fmi110
时间:
2015-9-2 15:36
asinzuo 发表于 2015-9-2 15:29
平均分这么长真的好么
没办法 不会设定输出格式
作者:
asinzuo
时间:
2015-9-2 16:34
fmi110 发表于 2015-9-2 15:36
没办法 不会设定输出格式
分数为啥一定用double呢,你看你即使用了double,也没给出个80.5分啊92.3啥的有小数的分数,{:3_51:}{:3_65:}{:3_69:}{:3_56:}{:3_68:}
作者:
asinzuo
时间:
2015-9-2 16:35
system.out.printf
作者:
陈劲松
时间:
2015-9-2 16:43
好长的代码、、
作者:
asinzuo
时间:
2015-9-2 16:44
//获取平均分
public double getAverage(){
return this.getTotal()/3;
}
在this.getTotal()/3;前面加个int也行
(int)this.getTotal()/3;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2