分析这段代码package demo; import java.util.HashMap; import java.util.Scanner; public class exercise333 { private static Scanner scanner; /** 学生信息集合 */ private static HashMap<String, Student> map = new HashMap<String, Student>(); public static void main(String[] args) { // TODO Auto-generated method stub select(); } private static void select() { System.out.println("请输入学号:"); Scanner sc = new Scanner(System.in); String nub = sc.nextLine(); try { Student student = map.get(nub); if (student == null) System.out.println("没有查询到该学生!"); else System.out.println(student.toString()); } catch (Exception e) { System.out.println("输入有误!"); } finally { sc.close(); } } } class Student { private String sno; /** 学号 */ private String name; /** 姓名 */ private String major; /** 专业 */ private int score; /** 成绩 */ public String toString() { return "学生信息{" + "学号='" + sno + '\'' + ", 姓名='" + name + '\'' + ", 专业='" + major + '\'' + ", 成绩='" + score + '\'' + '}'; } public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public Student(String sno, String name, String major, int score) { this.sno = sno; this.name = name; this.major = major; this.score = score; } }
时间: 2023-05-25 14:03:58 浏览: 140
这段代码定义了一个名为exercise333的类,其中包含了一个静态的HashMap对象map,存储了学号与对应的Student对象。main方法仅仅是调用了select方法。select方法中先读取从控制台输入的学号,然后通过map.get方法获取对应的Student对象,若不存在,则输出"没有查询到该学生!",否则调用Student的toString方法输出学生信息。由于可能存在异常,所以使用try-catch-finally语句块处理异常并关闭Scanner。
Student类定义了对象的基本属性及相关的getter、setter方法,同时还有一个构造方法用于创建Student对象。其中toString方法返回了该对象的字符串表示形式,也即学生信息的全部内容。
相关问题
package Expert import java.util.*;和package import java.util.*;的区别
这两个语句的区别在于导入的包的范围不同。
首先,`import java.util.*;` 导入了 `java.util` 包中的所有类和接口,包括 `ArrayList`、`HashMap`、`Scanner` 等等。当您需要使用该包中的任何类或接口时,您可以直接使用类名,而无需使用完全限定的类名。
其次,`package Expert import java.util.*;` 语句是一个 Java 源文件中的 package 声明和导入声明。它指定了当前 Java 源文件的包名和要导入的包。在这种情况下,它告诉编译器当前 Java 源文件属于 `Expert` 包,并且要导入 `java.util` 包中的所有类和接口。
因此,它们的作用是不同的。`import java.util.*;` 语句只是导入了一个包,而 `package Expert import java.util.*;` 语句同时指定了当前 Java 源文件的包名和要导入的包。
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner; public class CourseSelectionSystem { // 定义一个Map来存储学生选课信息 private static Map<String, List<String>> studentCourseMap = new HashMap<>(); public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请选择操作:1.查询学生选课信息 2.删除学生选课信息 3.存储学生选课信息 4.退出"); int choice = scanner.nextInt(); switch (choice) { case 1: queryStudentCourse(); break; case 2: deleteStudentCourse(); break; case 3: storeStudentCourse(); break; case 4: System.exit(0); break; default: System.out.println("无效的选择,请重新输入"); break; } } } // 查询学生选课信息 private static void queryStudentCourse() { Scanner scanner = new Scanner(System.in); System.out.println("请输入学生姓名:"); String name = scanner.nextLine(); if (studentCourseMap.containsKey(name)) { List<String> courses = studentCourseMap.get(name); System.out.println(name + "选课情况如下:"); for (String course : courses) { System.out.println(course); } } else { System.out.println(name + "没有选课"); } } // 删除学生选课信息 private static void deleteStudentCourse() { Scanner scanner = new Scanner(System.in); System.out.println("请输入学生姓名:"); String name = scanner.nextLine(); if (studentCourseMap.containsKey(name)) { System.out.println("请输入要删除的课程名称:"); String course = scanner.nextLine(); 增加一个更改学生选课的功能
好的,我可以为你增加一个更改学生选课的功能。你可以在菜单中再加一个选项,比如说“5.更改学生选课信息”。然后你可以在switch语句中新增一个case 5的分支,实现更改学生选课信息的功能。
具体实现方法可以参考下面的代码:
```
// 更改学生选课信息
private static void updateStudentCourse() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
if (studentCourseMap.containsKey(name)) {
System.out.println("请输入要更改的课程名称:");
String oldCourse = scanner.nextLine();
System.out.println("请输入新的课程名称:");
String newCourse = scanner.nextLine();
List<String> courses = studentCourseMap.get(name);
if (courses.contains(oldCourse)) {
courses.remove(oldCourse);
courses.add(newCourse);
System.out.println(name + "的选课信息已更新");
} else {
System.out.println(name + "没有选择" + oldCourse + "这门课程");
}
} else {
System.out.println(name + "没有选课");
}
}
// 存储学生选课信息
private static void storeStudentCourse() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入学生姓名:");
String name = scanner.nextLine();
System.out.println("请输入选课信息,多门课程用逗号隔开:");
String courseStr = scanner.nextLine();
List<String> courses = new ArrayList<>();
String[] courseArray = courseStr.split(",");
for (String course : courseArray) {
courses.add(course.trim());
}
studentCourseMap.put(name, courses);
System.out.println(name + "的选课信息已存储");
}
```
这个updateStudentCourse()方法可以让用户输入要更改的学生姓名、要更改的课程名称和新的课程名称,然后检查该学生是否已经选了这门课程,如果有则将其更改为新的课程名称,否则提示用户该学生没有选择要更改的课程。最后输出更改结果。注意要在storeStudentCourse()方法中将学生选课信息存储到Map中。
阅读全文