老师有个问题
package test;
import java.util.Scanner;
import model.Banji;
import model.School;
import model.Showcase;
import model.Student;
public class Test {
public static void main(String[] args) {
int i1;
boolean flag=false;
Scanner sc=new Scanner(System.in);
int i;
School schoolmanage = new School();
Banji mainbanji = new Banji("S00", "主学生列表");
schoolmanage.addbanji(mainbanji);
Showcase face = new Showcase();
while (true) {
face.show1();
while (true) {
try {
i = sc.nextInt();
if (i < 1 || i > 3) {
throw new Exception();
}
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("输入格式有误 ,请重新输入");
continue;
}
break;
}
switch (i) {
case 1:
while(true) {
face.show2(); //这里有问题当执行完一个程序之后 直接返回到SHOW1了 正确效果应该是返回到SHOW2
while (true) {
try {
i1 = sc.nextInt();
if (i1 < 1 || i1 > 8) {
throw new Exception();
}
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("输出格式有误请重新输入");
continue;
}
break;
}
switch (i1) {
case 1:
int num;
while (true) {
try {
System.out.println("请输入要添加的数量:");
num = sc.nextInt();
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("请输入数字");
continue;
}
break;
}
for (int a = 0; a<num; a++) {
System.out.println("请输入学生ID:");
String id = sc.next();
System.out.println("请输入学生名称:");
String name = sc.next();
Student stu = new Student(id, name);
boolean flag1=true;
for(Student w :mainbanji.getList()) {
if(!w.getStuNum().equals(id)) {
mainbanji.addStudent(stu);
flag1=false;
}
else {
System.out.println("学生ID不能相同");
}
}
if(flag1) {
mainbanji.addStudent(stu);
}
}
break;
case 2:
System.out.println("请输入添加班级的名称:");
String name = sc.next();
Banji b = schoolmanage.serchbyname(name);
if (b == null) {
System.out.println("该班级不存在");
} else {
System.out.println("请输入要添加的数量:");
int num1 = sc.nextInt();
for (int a = 0; i <= num1; a++) {
System.out.println("请输入学生ID:");
String id = sc.next();
System.out.println("请输入学生名称:");
String name1 = sc.next();
Student stu = new Student(id, name1);
b.addStudent(stu);
mainbanji.addStudent(stu);
}
}
break;
case 3:
System.out.println("请输入要查询的学生ID:");
String id2 = sc.next();
Student s = mainbanji.serchbyid(id2);
System.out.println(s);
case 4:
Float gradechinese;
System.out.println("请输入要添加的学生ID:");
String id3 = sc.next();
Student s1 = mainbanji.serchbyid(id3);
if (s1 == null) {
System.out.println("没有此ID");
break;
}
while(true) {
try {
System.out.println("请输入该学生的语文成绩");
gradechinese=sc.nextFloat();
if(gradechinese<0||gradechinese>100) {
throw new Exception();
}
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("输出的语文成绩格式有误,请重新输入");
continue;
}
break;
}
s1.setChinese(gradechinese);
break;
case 5:
Float grademath;
System.out.println("请输入要添加的学生ID:");
String id4 = sc.next();
Student s2 = mainbanji.serchbyid(id4);
if (s2 == null) {
System.out.println("没有此ID");
break;
}
while(true) {
try {
System.out.println("请输入该学生的数学成绩");
grademath=sc.nextFloat();
if(grademath<0||grademath>100) {
throw new Exception();
}
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("输出的语文成绩格式有误,请重新输入");
continue;
}
break;
}
s2.setChinese(grademath);
break;
case 6:
System.out.println("请输入要删除的学生ID:");
String id5 = sc.next();
Student s3 = mainbanji.serchbyid(id5);
if (s3 == null) {
System.out.println("没有此ID");
break;
}
else{
for(String s4:schoolmanage.getMap().keySet()) {
Banji bj=schoolmanage.serchbyname(s4);
for(Student s5:bj.getList()) {
if(s5.getStuNum().equals(id5)) {
bj.getList().remove(s3);
break;
}
}
}
}
mainbanji.getList().remove(s3);
break;
case 7:
for(Student e:mainbanji.getList()) {
System.out.println(e);
}
case 8:
flag=true;
}
if(flag) {
break;
}
} //while
break;
case 2:
while(true) {
face.show3();
int i2;
while(true){
try {
i2 = sc.nextInt();
if(i2<1||i2>7) {
throw new Exception();
}
} catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("输入有误请重新输入");
continue;
}
break;
}
switch(i2) {
case 1:
System.out.println("请输入要创建 的班级名称:");
String name=sc.next();
Banji b=schoolmanage.serchbyname(name);
schoolmanage.addbanji(b);
break;
case 2:
System.out.println("请输入要删除 的班级名称:");
String name1=sc.next();
Banji b1=schoolmanage.serchbyname(name1);
schoolmanage.deletebanji(b1);
break;
case 3:
System.out.println("请输入要查找的班级名称:");
String name2=sc.next();
Banji b3=schoolmanage.serchbyname(name2);
if(b3==null) {
System.out.println("该班级还没有添加请先添加:");
}
else {
for(Student q:b3.getList()) {
System.out.println(q);
}
}
break;
case 4:
schoolmanage.sortchinese();
break;
case 5:
schoolmanage.sortmath();
break;
case 6:
schoolmanage.displayallclassname();
case 7:
flag=true;
}
if(flag) {
break;
}
}
break;
case 3:
break;
}
}
}
}
package model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class School {
private Map<String, Banji> map;
private int i = 0;
public School() {
map = new HashMap<String, Banji>();
}
public Map<String, Banji> getMap() {
return map;
}
public void setMap(Map<String, Banji> map) {
this.map = map;
}
public void addbanji(Banji banji) {
for (String name : this.map.keySet()) {
if (name.equals(banji.getClassName())) {
System.out.println("改班级已经存在不用重复添加");
i = 1;
break;
}
}
if (i == 0) {
this.map.put(banji.getClassName(), banji);
i = 2;
}
}
public void deletebanji(Banji banji) {
for (String name : this.map.keySet()) {
if (!name.equals(banji.getClassName())) {
System.out.println("改班级不存在不用删除");
}
}
this.map.remove(banji.getClassName());
}
public Banji serchbyname(String name) {
Banji b = null;
for (String s : this.map.keySet()) {
if (s.equals(name)) {
b = this.map.get(name);
}
}
return b;
}
public void sortchinese() {
int i1=0;
Map<String,Float> m=new HashMap();
boolean flag=false;
if (i == 2) {
for (String s : map.keySet()) {
Banji b = this.serchbyname(s);
List<Student> li = new ArrayList<Student>();
li = b.getList();
int num=0;
Float sum=0f;
Float average=0f;
for (Student stu : li) {
if (stu.getChinese() != null) {
sum=sum+stu.getChinese();
num++;
i1=1;
}
}
if(sum!=0) {
average=sum/num;
m.put(s, average);
flag=true;
}
if(i1==0) {
System.out.println("还有班级没有输入成绩");
}
}
}
else {
System.out.println("还未输入班级");
}
if(flag) {
List<Map.Entry<String, Float>> l=new ArrayList(m.entrySet());
Collections.sort(l, new Com());
for(Map.Entry<String, Float> q:l) {
System.out.println(q.getKey()+":"+q.getValue());
}
}
}
public void sortmath() {
int i1=0;
Map<String,Float> m=new HashMap();
boolean flag=false;
if (i == 2) {
for (String s : map.keySet()) {
Banji b = this.serchbyname(s);
List<Student> li = new ArrayList<Student>();
li = b.getList();
int num=0;
Float sum=0f;
Float average=0f;
for (Student stu : li) {
if (stu.getMath() != null) {
sum=sum+stu.getMath();
num++;
i1=1;
}
}
if(sum!=0) {
average=sum/num;
m.put(s, average);
flag=true;
}
if(i1==0) {
System.out.println("还有班级没有输入成绩");
}
}
}
else {
System.out.println("还未输入班级");
}
if(flag) {
List<Map.Entry<String, Float>> l=new ArrayList(m.entrySet());
Collections.sort(l, new Com());
for(Map.Entry<String, Float> q:l) {
System.out.println(q.getKey()+":"+q.getValue());
}
}
}
public void displayallclassname() {
Set<String> nameset=new HashSet();
nameset=map.keySet();
for(String name:nameset) {
System.out.println(name);
}
}
}
package model;
import java.util.ArrayList;
import java.util.List;
public class Banji {
private List<Student> list;
private String classid;
private String className;
public List<Student> getList() {
return list;
}
public void setList(List<Student> list) {
this.list = list;
}
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 Banji( String classid, String className) {
super();
list=new ArrayList<Student>();
this.classid = classid;
this.className = className;
}
public void addStudent(Student stu) {
int i=1;
for(Student stu1:this.list) {
if(stu1.equals(stu)) {
System.out.println("该学生已经存在不需要重复输入");
i=i+1;
}
}
if(i!=2) {this.list.add(stu);
}
}
public Student serchbyid(String StuNum) {
Student stu=null;
for(Student stu1:this.list) {
if(stu1.getStuNum().equalsIgnoreCase(StuNum)) {
stu=stu1;
}
}
return stu;
}
public void insertChinese(Student stu,float score) {
stu.setChinese(score);
}
public void insertmath(Student stu,float score) {
stu.setMath(score);
}
public void deleteStudent(Student stu) {
this.list.remove(stu);
}
public void showallstu() {
for(Student stu:this.list) {
System.out.println(stu);
}
}
}
package model;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Student {
private String stuNum;
private String stuName;
private Float math;
private Float chinese;
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 Student(String stuNum, String stuName) {
super();
this.stuNum = stuNum;
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 String toString() {
if(this.getMath()==null) {
return "学生学号:" + this.getStuNum() + "\n学生姓名:" + this.getStuName() + "\n学生语文成绩:"
+ this.getChinese();
}
if(this.getChinese()==null) {
return "学生学号:" + this.getStuNum() + "\n学生姓名:" + this.getStuName() + "\n学生数学成绩:" + this.getMath();
}
return "学生学号:" + this.getStuNum() + "\n学生姓名:" + this.getStuName() + "\n学生数学成绩:" + this.getMath() + "\n学生语文成绩:"
+ this.getChinese();
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((chinese == null) ? 0 : chinese.hashCode());
result = prime * result + ((math == null) ? 0 : math.hashCode());
result = prime * result + ((stuName == null) ? 0 : stuName.hashCode());
result = prime * result + ((stuNum == null) ? 0 : stuNum.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (Student.class == obj.getClass()) {
Student stu = (Student) obj;
return stu.getStuName().equals(stuName) && stu.getStuNum().equals(stuNum);
} else {
return false;
}
}
}
package model;
public class Showcase {
public void show1() {
System.out.println("**********");
System.out.println("1.班级管理");
System.out.println("2.学校管理");
System.out.println("3.退出程序");
System.out.println("**********");
}
public void show2() {
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("8.返回上一级");
System.out.println("**********");
}
public void show3() {
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("**********");
}
}
老师我这个代码先输入1进入班级管理 然后我按了下a 理想效果应该是提醒我重新输入 然而实际效果是无限出现输入有误请重新输入 我去DEBUG了一 下 在这一步的时候i1 = sc.nextInt();我输入数字1但是i1还是没有赋值成功 我觉得问题可能出在这里 但不知道到底怎么回事 麻烦老师看看
正在回答
同学你好,同学指的是会出现如下图所示的情况吗?如果是的话,这种情况是正确的哦~
输入错误后需要重新选择菜单呢~
同学想要输入错误,退出菜单的话,将catch语句中的continue;改成break;退出循环。
如果不是的话,请同学详细描述下问题,方便老师为同学解答~
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
同学你好,1、需要有一个sc.next()方法来接收这个异常的值-->同学可以这样理解:之前人家用nextInt()需要的是一个int类型的,结果你给人家的字符串类型的,它是不会接受的。相当于那个之前输入的String类型的一直在上方飘着。直到它遇到一个对的方法,可以接收键盘输入的Sring类型的方法。直到他遇到了sc.next()。sc.next()需要接收一个键盘输入的String类型的值。而之前我们已经输入了一个了,但是还没有方法接收,然后这个sc.next()就会接收了。它不一定是让你必须现在输入,而是要等待一个键盘输入的String类型。正好它就把在上方等待接收的输入错误的给接收了!
2、关于 face.show2(); // 这里有问题当执行完一个程序之后 直接返回到SHOW1了 正确效果应该是返回到SHOW2的问题,修改建议如下:添加case7的跳出循环语句!否则每次都会执行case7和case8中的语句,直接跳出了循环!
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧