public class CourseCatalog{ private HashMap<String,Course> courses; public CourseCatalog() { courses = new HashMap<String,Course>(); } public void addCourse(Course c) { String key = c.getCourseNo(); courses.put(key, c); } public Course findCourse(String courseNo) { return courses.get(courseNo); } }
时间: 2024-04-13 07:26:45 浏览: 52
根据你提供的代码,我注意到你的 `addCourse` 方法将课程对象添加到 HashMap 中,并使用课程编号作为键。而 `findCourse` 方法则根据课程编号从 HashMap 中获取对应的课程对象。
根据你的描述,问题是无论输入什么课程编号,`findCourse` 方法都返回 `null`。这种情况可能是由于课程编号的匹配问题导致的。
请确保在调用 `findCourse` 方法时,传入的课程编号与添加课程时所使用的课程编号完全一致,包括大小写和任何其他字符。如果传入的课程编号与 HashMap 中的键不匹配,那么 `get` 方法将返回 `null`。
另外,请确保你在添加课程之前已经调用了 `addCourse` 方法。如果没有调用该方法,HashMap 中将没有任何课程对象,因此无法通过课程编号进行查找。
如果你仍然遇到问题,请提供更多代码或详细描述,以便我能够更准确地帮助你解决问题。
相关问题
import java.util.*;public class Schedule { // Map 用于存储课程安排信息 private Map<String, List<String>> schedule; public Schedule() { this.schedule = new HashMap<>(); } // 添加课程信息 public void addSchedule(String time, String course, String classroom) { if (schedule.containsKey(time)) { List<String> courses = schedule.get(time); if (courses.contains(course) || courses.contains(classroom)) { System.out.println("Error: Course or classroom already scheduled at this time."); } else { courses.add(course); courses.add(classroom); schedule.put(time, courses); System.out.println("Schedule added successfully."); } } else { List<String> courses = new ArrayList<>(); courses.add(course); courses.add(classroom); schedule.put(time, courses); System.out.println("Schedule added successfully."); } } // 获取课程安排信息 public List<String> getSchedule(String time) { if (schedule.containsKey(time)) { return schedule.get(time); } else { return null; } } public static void main(String[] args) { Schedule schedule = new Schedule(); schedule.addSchedule("Monday 9:00", "Math", "Room 101"); schedule.addSchedule("Monday 9:00", "Physics", "Room 102"); schedule.addSchedule("Monday 10:00", "English", "Room 103"); List<String> monday_9 = schedule.getSchedule("Monday 9:00"); System.out.println("Monday 9:00 schedule: " + monday_9.toString()); }}请将每一句代码解释一下
这是一个Java程序,名为Schedule,用于存储和获取课程安排信息。下面是代码的解释:
```java
import java.util.*; // 导入Java工具包
public class Schedule { // 定义一个名为Schedule的类
// Map 用于存储课程安排信息
private Map<String, List<String>> schedule;
// 类的构造函数,用于初始化schedule
public Schedule() {
this.schedule = new HashMap<>();
}
// 添加课程信息
public void addSchedule(String time, String course, String classroom) {
if (schedule.containsKey(time)) { // 判断时间是否已经被占用
List<String> courses = schedule.get(time); // 获取该时间段已经占用的课程信息
if (courses.contains(course) || courses.contains(classroom)) {
// 判断该课程或教室是否已经被占用
System.out.println("Error: Course or classroom already scheduled at this time.");
} else {
courses.add(course);
courses.add(classroom);
schedule.put(time, courses); // 将课程信息添加到schedule中
System.out.println("Schedule added successfully.");
}
} else {
List<String> courses = new ArrayList<>();
courses.add(course);
courses.add(classroom);
schedule.put(time, courses); // 将课程信息添加到schedule中
System.out.println("Schedule added successfully.");
}
}
// 获取课程安排信息
public List<String> getSchedule(String time) {
if (schedule.containsKey(time)) {
return schedule.get(time); // 返回该时间段的课程信息
} else {
return null; // 如果该时间段没有课程信息,则返回null
}
}
// 主函数
public static void main(String[] args) {
Schedule schedule = new Schedule(); // 创建一个Schedule对象
schedule.addSchedule("Monday 9:00", "Math", "Room 101"); // 添加课程信息
schedule.addSchedule("Monday 9:00", "Physics", "Room 102");
schedule.addSchedule("Monday 10:00", "English", "Room 103");
List<String> monday_9 = schedule.getSchedule("Monday 9:00"); // 获取课程信息
System.out.println("Monday 9:00 schedule: " + monday_9.toString()); // 打印课程信息
}
}
```
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中。
阅读全文