老师,我的对成绩取平均分不正确,请指导一下,按我的程序
package com.imooc.zuoye4;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
/**
* TestDemo类
*
* 方法:
*
* 班级的测试方法:public void testBanJi(){}
*
* 学校的测试方法:public void testSchool(){}
*
* 主菜单: public void mainMenu(){}
*
* 学校管理菜单:public void schoolMenu(){}
*
* 班级管理菜单:public void banJiMenu(){}
*
* 主流程:public void test(){}
*
*
* @author 14628
*
*/
public class TestDemo {
public void testStudent() {
// Student类测试
Student student0 = new Student("s001", "妮妮");
Student student1 = new Student("s002", "天天");
Student student2 = new Student("s003", "阳阳");
Student student3 = new Student("s003", "阳阳");
System.out.println(student0);
System.out.println(student1);
System.out.println(student2);
// 测试0和2这两个对象是否相等
System.out.println("student0==student2?" + student0.equals(student2));
// 测试2和3这两个对象是否相等
System.out.println("student2==student3?" + student2.equals(student3));
}
public void testBanJi() {
// 定义几个Student类对象,添加到班级中
Student student0 = new Student("s001", "妮妮");
Student student1 = new Student("s002", "天天");
Student student2 = new Student("s003", "阳阳");
// 创建一个Banji对象
Banji mainXueSheng = new Banji("主学生列表");
mainXueSheng.addStudent(student0);
mainXueSheng.addStudent(student1);
mainXueSheng.addStudent(student2);
// 显示学生信息
mainXueSheng.displayAllStudent();
// 通过学号查询学生信息
Student student = mainXueSheng.searchStudentByNum("s001");
if (student != null) {
System.out.println("通过学号查询的学生信息为:");
System.out.println(student);
} else {
System.out.println("该学生不存在!");
}
// 输入学生的语文成绩
mainXueSheng.insertChineseScore("s001", 88);
mainXueSheng.insertChineseScore("s002", 98);
mainXueSheng.insertChineseScore("s003", 78);
// 输出学生的语文成绩
System.out.println("学生的语文成绩为:");
List<Student> stuList = mainXueSheng.getStuList();
for (Student stu : stuList) {
System.out.println("学号:" + stu.getStuNum() + ",姓名:" + stu.getStuName() + ",语文成绩:" + stu.getChinese());
}
// 输入学生的数学成绩
mainXueSheng.insertMathScore("s001", 77);
mainXueSheng.insertMathScore("s002", 88);
mainXueSheng.insertMathScore("s003", 99);
// 输出学生的数学成绩
System.out.println("学生的数学成绩为:");
for (Student stu : stuList) {
System.out.println("学号:" + stu.getStuNum() + ",姓名:" + stu.getStuName() + ",数学成绩:" + stu.getMath());
}
// 显示所有学生信息
System.out.println("所有学生的信息:");
mainXueSheng.displayAllStudent();
System.out.println("11133" + mainXueSheng.getAverageChinese());
// Scanner sc=new Scanner(System.in);
// System.out.println("请输入xuehao:");
// String stuNum1 = sc.next();
// System.out.println("请输入一个语文成绩:");
// float yuwen = sc.nextFloat();
// System.out.println(yuwen);
// zhuXueSheng.insertChineseScore(stuNum1,yuwen );
// zhuXueSheng.displayAllStudent();
//
// 删除学生信息
System.out.println("删除前:");
mainXueSheng.displayAllStudent();
System.out.println("删除后:");
mainXueSheng.deleteStudent("s001");
mainXueSheng.displayAllStudent();
}
// 测试School类的方法
public void testSchool() {
Student student1 = new Student("s001", "nini");
Student student2 = new Student("s002", "hini");
Student student3 = new Student("s003", "gini");
Student student4 = new Student("s004", "bini");
Student student5 = new Student("s005", "gini");
Student student6 = new Student("s006", "fini");
Student student7 = new Student("s007", "eini");
Student student8 = new Student("s008", "wini");
Student student9 = new Student("s009", "sini");
Banji banji = new Banji("yiban");
Banji banji2 = new Banji("erban");
Banji banji3 = new Banji("sanban");
banji.addStudent(student1);
banji.addStudent(student2);
banji.addStudent(student3);
banji2.addStudent(student4);
banji2.addStudent(student5);
banji2.addStudent(student6);
banji3.addStudent(student7);
banji3.addStudent(student8);
banji3.addStudent(student9);
banji.insertChineseScore("s001", 88);
banji.insertChineseScore("s002", 98);
banji.insertChineseScore("s003", 78);
banji2.insertChineseScore("s004", 77);
banji2.insertChineseScore("s005", 78);
banji2.insertChineseScore("s006", 70);
banji3.insertChineseScore("s007", 74);
banji3.insertChineseScore("s008", 76);
banji3.insertChineseScore("s009", 72);
banji.insertMathScore("s001", 89);
banji.insertMathScore("s002", 100);
banji.insertMathScore("s003", 99);
banji2.insertMathScore("s004", 45);
banji2.insertMathScore("s005", 78);
banji2.insertMathScore("s006", 87);
banji3.insertMathScore("s007", 46);
banji3.insertMathScore("s008", 67);
banji3.insertMathScore("s009", 87);
School school = new School();
school.addBanji(banji);
school.addBanji(banji2);
school.addBanji(banji3);
System.out.println("各班的语文成绩平均值:");
school.sortChineseByAverage();
System.out.println("各班的数学成绩平均值:");
school.sortMathByAverage();
}
// 主菜单
public void mainMenu() {
System.out.println("************************************");
System.out.println(" **主菜单** ");
System.out.println(" 1-班级管理 ");
System.out.println(" 2-学校管理 ");
System.out.println(" 0-退出 ");
System.out.println("************************************");
}
// 学校菜单
public void schoolMenu() {
System.out.println("***********************************************************");
System.out.println(" **学校管理** ");
System.out.println(" 1-创建班级");
System.out.println(" 2-删除班级");
System.out.println(" 3-通过班级名称查询班级信息");
System.out.println(" 4-对各班语文成绩按平均分进行由大到小排序");
System.out.println(" 5-对各班数学成绩按平均分进行由大到小排序");
System.out.println(" 6-显示所有班级名称");
System.out.println(" 9-返回上一级菜单");
System.out.println("***********************************************************");
}
// 班级菜单
public void classMenu() {
System.out.println("***********************************************************");
System.out.println(" **班级管理** ");
System.out.println(" 1- 添加学生信息到主学生列表");
System.out.println(" 2-添加学生信息到普通班级");
System.out.println(" 3-通过学号查询学生信息");
System.out.println(" 4- 输入班级的语文成绩");
System.out.println(" 5- 输入班级的数学成绩");
System.out.println(" 6- 删除学生信息");
System.out.println(" 7-显示所有学生信息");
System.out.println(" 9-返回上一级菜单");
System.out.println("***********************************************************");
}
// 测试
public void test() {
TestDemo td = new TestDemo();
Scanner sc = new Scanner(System.in);
int input1 = 0, input2 = 0, input3 = 0;
// 创建一个学校
School school = new School();
// 创建一个班级主学生列表
Banji mainBanJi = new Banji("主学生列表");
// 把学生添加到班级中
school.addBanji(mainBanJi);
Banji banJi1=null;
while (true) {
td.mainMenu();
System.out.println("请输入对应数字进行操作!");
try {
input1 = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入的格式有误,请从新输入");
sc.next();
}
if (input1 == 0) {
break;
}
switch (input1) {
case 1:
// 班级操作,班级管理
while (true) {
td.classMenu();
System.out.println("请输入对应数字操作!");
try {
input2 = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入的格式有误,请从新输入");
sc.next();
}
if (input2 == 9) {
break;
}
switch (input2) {
case 1:
System.out.println("添加学生信息到主学生列表");
System.out.println("请输入要添加学生的数量:");
int cuont=0;
try {
cuont = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入的格式有误,请从新输入");
sc.next();
continue;
}
for(int i=1;i<=cuont;i++) {
System.out.println("请输入添加学生的信息");
System.out.println("请输入添加第"+i+"个学生的学号");
String strStuNum=sc.next();
System.out.println("请输入要添加第"+i+"个学生的姓名:");
String strStuName=sc.next();
//创建学生对象
Student student=new Student(strStuNum,strStuName);
//把学生添加到主学生列表中
mainBanJi.addStudent(student);
}
mainBanJi.displayAllStudent();
break;
case 2:
System.out.println("添加学生信息到普通班级");
System.out.println("请输入要添加的班级名称:");
String sName=sc.next();
//根据名称判断班级是否在学生中存在
banJi1=school.searchByName(sName);
if(banJi1==null) {
System.out.println("该班级不存在,请先将班级添加到学校中");
}else{
System.out.println("请输入要添加的学生数量:");
int count1=0;
try {
count1 = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入的格式有误,请从新输入");
sc.next();
}
for(int i=1;i<=count1;i++) {
System.out.println("请输入第"+i+"个学生");
System.out.println("请输入学生学号:");
String strStuNum=sc.next();
//首先判断该学号的学生是否在主学生列表存在
Student student=mainBanJi.searchStudentByNum(strStuNum);
if(student==null) {
System.out.println("该学生不存在主学生列表中,请输入学生姓名:");
String strStuName=sc.next();
//创建学生类对象
student=new Student(strStuNum,strStuName);
//把学生添加到普通列表
banJi1.addStudent(student);
//然后再把学生添加到主学生列表
mainBanJi.addStudent(student);
}else {
//如果不为空,直接将学生添加到现在的列表中
banJi1.addStudent(student);
}
}
//显示学生列表中的学生信息
System.out.println("主学生列表:");
mainBanJi.displayAllStudent();
System.out.println("添加到学生列表");
banJi1.displayAllStudent();
}
break;
case 3:
System.out.println("通过学号查询学生信息");
System.out.println("请输入要查询的班级名称");
String strClassName=sc.next();
//把查询到的班级赋给banJi2
Banji banJi2=school.searchByName(strClassName);
if(banJi2==null) {
System.out.println("输入的班级不存在!");break;
}else {
System.out.println("请输入要查询学生信息的学号:");
String strStuNum=sc.next();
//查询班级里是否存在该学生
Student s=banJi2.searchStudentByNum(strStuNum);
if(s==null) {
System.out.println("该学生学生列表不存在!");
}else {
System.out.println("查询的学生信息为:");
System.out.println(s);
}
}
break;
case 4:
System.out.println("输入班级的语文成绩");
List<Student> stuList=mainBanJi.getStuList();
for(Student stu:stuList) {
System.out.println("请输入语文成绩学生的学号:");
String strStuNum=sc.next();
System.out.println("输入学号为"+strStuNum+"的语文成绩:");
float flChinese=sc.nextFloat();
System.out.println("学号:"+stu.getStuNum()+",姓名:"+stu.getStuName()+",语文成绩:"+flChinese);
}
//显示所有的学生信息
mainBanJi.displayAllStudent();
break;
case 5:
System.out.println("输入班级的数学成绩");
int count=0;
System.out.println("请输入添加的学生个数");
count=sc.nextInt();
for(int i=1;i<=count;i++) {
System.out.println("请输入学生学号:");
String strStuNum=sc.next();
System.out.println("请输入学号为"+strStuNum+"的数学成绩:");
float fl=sc.nextFloat();
mainBanJi.insertMathScore(strStuNum, fl);
}
mainBanJi.displayAllStudent();
// List<Student> stuList2=mainBanJi.getStuList();
// for(Student stu:stuList2) {
// System.out.println("请输入数学成绩学生的学号:");
// String strStuNum=sc.next();
// System.out.println("请输入学号为"+strStuNum+"的数学成绩:");
// float flMath=sc.nextFloat();
// System.out.println("学号:"+stu.getStuNum()+",姓名:"+stu.getStuName()+",数学成绩:"+flMath);
// }
break;
case 6:
System.out.println("删除学生信息");
System.out.println("输入要查询的班级:");
String strBanJi6=sc.next();
//查询班级是否存在
Banji bj6=school.searchByName(strBanJi6);
if(bj6==null) {
System.out.println("没有该班级!");break;
}else {
System.out.println("请输入要删除的学生名称:");
String strName=sc.next();
bj6.deleteStudent(strName);
}
break;
case 7:
System.out.println("显示所有学生信息");
mainBanJi.displayAllStudent();
break;
default:
System.out.println("没有对应的数字操作!");
break;
}
}
case 2:
// 学校操作,学校管理
while (true) {
td.schoolMenu();
System.out.println("请输入对应的数字操作!");
try {
input3 = sc.nextInt();
} catch (InputMismatchException e) {
System.out.println("输入的格式有误,请从新输入");
sc.next();
}
if (input3 == 9) {
break;
}
switch (input3) {
case 1:
System.out.println("创建班级");
System.out.println("请输入要添加的班级名称:");
String banJiName=sc.next();
//创建一个新的班级对象
banJi1=new Banji(banJiName);
//将班级添加到学校中
school.addBanji(banJi1);
break;
case 2:
System.out.println("删除班级");
System.out.println("请输入要删除的班级:");
String strName=sc.next();
if(strName.equals("主学生列表")) {
System.out.println("主学生列表不能删除!");
}
//查询班级是否存在
Banji banji2=school.searchByName(strName);
if(banji2==null) {
System.out.println("该班级不存在!");
}else {
school.deleteBanji(banji2);
}
break;
case 3:
System.out.println("通过班级名称查询班级信息");
System.out.println("请输入要查询的班级名称:");
String strName3=sc.next();
Banji bj=school.searchByName(strName3);
if(bj==null) {
System.out.println("该班级不存在!");
}else {
System.out.println("该班级存在");
System.out.println("该班级名称为:"+strName3);
System.out.println("学校所有班级:");
school.displayBanJiName();
}
break;
case 4:
System.out.println("对各班语文成绩按平均分进行由大到小排序");
school.sortChineseByAverage();
break;
case 5:
System.out.println("对各班数学成绩按平均分进行由大到小排序");
school.sortMathByAverage();
break;
case 6:
System.out.println("显示所有班级名称");
school.displayBanJiName();
break;
default:
System.out.println("没有对应的数字操作!");
break;
}
}
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestDemo td = new TestDemo();
// td.testStudent();
// td.testBanJi();
// td.testSchool();
td.test();
}
}package com.imooc.zuoye4;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/***
* 属性:存放班级的集合(schoolMap) ,类型为Map
方法: 构造方法
getter和setter方法
添加班级:public void addBanji(Banji banji){}
删除班级 : public void deleteBanji(Banji banji){}
通过班级名称查询班级:public BanJi searchByName(String className) {}
对各班语文成绩按平均分进行由大到小排序:public void sortChineseByAverage() {}
对各班数学成绩按平均分进行由大到小排序:public void sortMathByAverage() {}
显示所有班级名称:public void displayBanJiName() {}
* @author 14628
*
*/
public class School {
//存放班级的集合
Map<String,Banji> schoolMap;
public School() {
schoolMap=new HashMap<String,Banji>();
}
public Map<String, Banji> getSchoolMap() {
return schoolMap;
}
public void setSchoolMap(Map<String, Banji> schoolMap) {
this.schoolMap = schoolMap;
}
/**
* 添加班级
* @param banji 要添加的班级
*/
public void addBanji(Banji banji){
//将班级名称作为KEY值
schoolMap.put(banji.getClassName(), banji);
}
/**
* 删除班级
* @param banji 要删除的班级
*/
public void deleteBanji(Banji banji){
schoolMap.remove(banji.getClassName());
System.out.println("删除成功!");
}
/**
* 通过班级名称查询班级
* @param className 班级名
* @return
*/
public Banji searchByName(String className) {
Banji banJi=null;
Set<String> banJiSet=schoolMap.keySet();
for(String s:banJiSet) {
if(s.equals(className)) {
banJi=schoolMap.get(s);break;
}
}
return banJi;
}
/**
* 对各班语文成绩按平均分进行由大到小排序
*/
public void sortChineseByAverage() {
List<HashMap.Entry<String,Banji>> list=new ArrayList();
for(Map.Entry<String,Banji> entry:schoolMap.entrySet()) {
list.add(entry);
//System.out.println(entry.getKey()+"语文平均成绩为:"+entry.getValue().getAverageChinese());
}
Collections.sort(list,new Comparator<HashMap.Entry<String,Banji>>() {
public int compare(HashMap.Entry<String,Banji> o1,HashMap.Entry<String,Banji> o2) {
return (int)o2.getValue().getAverageChinese()-(int)o1.getValue().getAverageChinese();
}
});
for(HashMap.Entry<String,Banji> sss:list) {
System.out.println(sss.getKey());
System.out.println(sss.getValue().getAverageChinese());
}
// Collections.sort(list, new Comparator<HashMap.Entry<String, Integer>>() {
// public int compare(HashMap.Entry<String, Integer> o1, HashMap.Entry<String, Integer> o2) {
// return o2.getValue() - o1.getValue(); //这里是从大到小进行排序,如果需从小到大进行排序则将o1和o2互换即可
// }
// });
}
/**
* 对各班数学成绩按平均分进行由大到小排序
*/
public void sortMathByAverage() {
List<HashMap.Entry<String,Banji>> list2=new ArrayList();
for(Map.Entry<String,Banji> entry:schoolMap.entrySet()) {
list2.add(entry);
}
Collections.sort(list2,new Comparator<HashMap.Entry<String,Banji>>(){
public int compare(HashMap.Entry<String,Banji> o1,HashMap.Entry<String,Banji> o2) {
return (int)o2.getValue().getAverageMath()-(int)o1.getValue().getAverageMath();
}
});
for(HashMap.Entry<String,Banji> entry:list2) {
System.out.println(entry.getKey()+"\n"+entry.getValue().getAverageMath());
}
}
/**
* 显示所有班级名称
*/
public void displayBanJiName() {
//取出key值
Set<String> schoolSet=schoolMap.keySet();
System.out.println("所有班级信息为:");
for(String s:schoolSet) {
if(s.equals("主学生列表"))continue;
System.out.println(s);
}
}
}package com.imooc.zuoye4;
/**
*
* 属性: 学号(stuNum)、姓名(stuName) 这两个属性为String类型
数学成绩(math)、语文成绩(chinese) 这两个属性为float类型
方法: 构造方法
setter和getter方法
hashCode()和equals()方法
toString()方法
* @author 14628
*
*/
public class Student {
private String stuNum;
private String stuName;
private float math;
private float chinese;
public Student() {
}
public Student(String stuNum, String stuName) {
super();
this.stuNum = stuNum;
this.stuName = stuName;
}
public String getStuNum() {
return stuNum;
}
public void setStuNum(String stuNum) {
this.stuNum = stuNum;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public float getMath() {
return math;
}
public void setMath(float math) {
this.math = math;
}
public float getChinese() {
return chinese;
}
public void setChinese(float chinese) {
this.chinese = chinese;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + Float.floatToIntBits(chinese);
result = prime * result + Float.floatToIntBits(math);
result = prime * result + ((stuName == null) ? 0 : stuName.hashCode());
result = prime * result + ((stuNum == null) ? 0 : stuNum.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
//判断对象是否相等,如果相等则返回true,就不用继续比较属性了
if(this==obj) {
return true;
}
//判断obj是否是Student类的对象
if(obj.getClass()==Student.class) {
Student student=(Student)obj;
return student.getStuNum().equals(stuNum)&&student.getStuName().equals(stuName)&&
student.getMath()==this.math&&student.getChinese()==this.chinese;
}
return false;
}
@Override
public String toString() {
return "学生信息为:学号:" + stuNum + ",姓名:" + stuName ;
}
}package com.imooc.zuoye4;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* Banji类:
属性:班级编号(classId)、班级名称(className) 这两个属性均为String类型
存放学生的集合(stuList) 这个属性为List类型
方法:构造方法
getter和setter方法
将学生添加到班级:public void addStudent(Student stu){}
通过学号查询学生在班级中是否存在: public Student searchStudentByNum(String stuNum){}
输入班级学生的语文成绩:public void insertChineseScore(String stuNum,float score){}
输入班级学生的数学成绩:public void insertMathScore(String stuNum,float score){}
删除学习信息:public void deleteStudent(String stuNum){}
显示所有学生的信息(包括学号和姓名):public void displayAllStudent(){}
* @author 14628
*
*/
public class Banji {
private String classId;
private String className;
private List<Student> stuList;
public Banji( String className) {
super();
this.className = className;
stuList=new ArrayList<Student>();
}
public String getClassId() {
return classId;
}
public void setClassId(String classId) {
this.classId = classId;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public List<Student> getStuList() {
return stuList;
}
public void setStuList(List<Student> stuList) {
this.stuList = stuList;
}
/**
* 将学生添加到班级
* @param stu 添加的学生
*/
public void addStudent(Student stu){
//要排除重复添加的情况
boolean flag=false;//判断班级中的学生是否存在
for(Student student:stuList) {
if(student.equals(stu)) {
System.out.println("该学生");
flag=true;
}
}
if(flag) {
System.out.println("该学生已经在此班级中存在!添加失败");
}
else {
stuList.add(stu);
}
}
/**
* 通过学号查询学生在班级中是否存在
* @param stuNum 要查询的学生学号
* @return
*/
public Student searchStudentByNum(String stuNum){
Student student=null;
//学号是唯一的
for(Student student1:stuList) {
if(student1.getStuNum().equals(stuNum)) {
student=student1;
break;
}
}
return student;
}
/**
*
输入班级学生的语文成绩
* @param stuNum 学生学号
* @param score 学生的语文成绩
*/
public void insertChineseScore(String stuNum,float score){
//通过学号查询学生信息
Student student1=searchStudentByNum(stuNum);
if(student1!=null) {
//该学生不为空时,表示学生存在
System.out.println("添加学号为:"+stuNum+"的语文成绩为:"+score);
student1.setChinese(score);
}else {
System.out.println("没有该学生信息!");
}
}
/**
* 输入班级学生的数学成绩
* @param stuNum 学生学号
* @param score 学生的数学成绩
*/
public void insertMathScore(String stuNum,float score){
Scanner sc=new Scanner(System.in);
//通过学号查询学生信息
Student student2=searchStudentByNum(stuNum);
if(student2!=null) {
//该学生不为空时,输入数学成绩
System.out.println("添加学号为:"+stuNum+"的数学成绩为:"+score);
student2.setMath(score);
}else {
System.out.println("该学生信息不存在!");
}
}
/**
* 删除学习信息
* @param stuNum 学生学号
*/
public void deleteStudent(String stuNum){
Student student=searchStudentByNum(stuNum);
if(student!=null) {
stuList.remove(student);
}else {
System.out.println("没有找到学号为"+stuNum+"的学生信息!");
}
}
/**
* 取该班的语文平均分
*/
public float getAverageChinese() {
int zongR=0;
float zongF=0;
for(Student s:stuList) {
float a=s.getChinese();
zongF+=a;
}
return zongF/stuList.size();
}
/**
* 取该班的数学平均分
*/
public float getAverageMath() {
float zongF=0;
int zongR=0;
for(Student s:stuList) {
float a=s.getMath();
zongF+=a;
}
return zongF/stuList.size();
}
/**
* 显示所有学生的信息(包括学号和姓名)
*/
public void displayAllStudent(){
System.out.println("该班级所有学生信息:");
for(Student stu:stuList) {
System.out.println(stu);
}
}
}33
收起
正在回答 回答被采纳积分+1
2回答
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星