System.out.println("请输入想要存储的老师人数:"); Scanner scanner = new Scanner(System.in); int number = scanner.nextInt(); List<Teacher> teacherList = new ArrayList<>(); for (int i=0;i<number;i++) { scanner.nextLine(); System.out.println("请输入第" + (i + 1) + "个人的姓名:"); String names = scanner.nextLine(); System.out.println("请输入第" + (i + 1) + "个人的所教科目:"); String sub = scanner.nextLine(); Teacher teacher = new Teacher(names,sub); teacherList.add(teacher); } for (int i=0;i<number;i++){ System.out.println("第"+(i+1)+"个老师的信息"); System.out.println("姓名:"+teacherList.get(i).getName()); System.out.println("科目:"+teacherList.get(i).getSubject()); System.out.println(); }
时间: 2024-02-15 10:28:12 浏览: 71
这段代码是一个简单的 Java 程序,用于从用户输入中读取老师信息,并将其存储到一个 List 中,最后输出所有老师的信息。程序的主要执行过程如下:
1. 提示用户输入要存储的老师人数;
2. 创建一个 Scanner 对象,用于读取用户输入;
3. 读取用户输入的老师人数,并将其保存到变量 number 中;
4. 创建一个空的 List 对象 teacherList,用于存储老师信息;
5. 使用 for 循环,读取每个老师的姓名和所教科目,并创建一个 Teacher 对象,将其添加到 teacherList 中;
6. 使用 for 循环,遍历 teacherList 中的所有老师对象,并输出每个老师的姓名和所教科目。
需要注意的是,程序在读取每个老师的姓名和所教科目时,使用了 scanner.nextLine() 方法,而不是 scanner.nextInt() 方法。这是因为 scanner.nextInt() 方法只会读取用户输入的整数部分,而不会读取换行符,导致下一次读取字符串时会出现问题。因此,需要在读取整数后,调用 scanner.nextLine() 方法将换行符读取并丢弃。
相关问题
Scanner scanner1=new Scanner(System.in); String a=scanner1.nextLine(); switch (a) { case "学生": { System.out.println("请输入想要存储的学生人数:"); Scanner scanner = new Scanner(System.in); int number = scanner.nextInt(); List<Student> studentList = new ArrayList<>(); for (int i=0;i<number;i++) { System.out.println("请输入第"+(i+1)+"个人的学号:"); int num = scanner.nextInt(); scanner.nextLine(); System.out.println("请输入第"+(i+1)+"个人的姓名:"); String names = scanner.nextLine(); System.out.println("请输入第"+(i+1)+"个人的所学科目:"); String sub = scanner.nextLine(); Student student = new Student(num, names, sub); studentList.add(student); } for (int i=0;i<number;i++) { System.out.println("第"+(i+1)+"个学生的信息"); System.out.println("学号:"+studentList.get(i).getNumber()); System.out.println("姓名:"+studentList.get(i).getName()); System.out.println("科目:"+studentList.get(i).getSubject()); System.out.println(); } }这串代码如何使用hashmap索引list里面的科目
可以将List<Student>中的每个Student对象的subject作为key,将对应的Student对象作为value存入HashMap<String, Student>中,然后就可以通过key来获取对应的Student对象了。代码如下:
```
Map<String, Student> map = new HashMap<>();
for (Student student : studentList) {
map.put(student.getSubject(), student);
}
```
然后可以通过如下方式来获取对应科目的学生信息:
```
String sub = "数学"; // 假设要获取数学科目的学生信息
Student student = map.get(sub);
if (student != null) {
System.out.println("学号:" + student.getNumber());
System.out.println("姓名:" + student.getName());
System.out.println("科目:" + student.getSubject());
}
```
private static void modifyStudent() throws IOException { Scanner scanner = new Scanner(System.in); System.out.println("请输入要修改的学生姓名:"); String name = scanner.nextLine(); List<Student> students = readStudentsFromFile(); for (Student student : students) { if (student.getName().equals(name)) { System.out.println("请输入新的学生姓名:"); String newName = scanner.nextLine(); System.out.println("请输入新的学生年龄:"); int newAge = scanner.nextInt(); scanner.nextLine(); System.out.println("请输入新的学生性别:"); String newGender = scanner.nextLine(); student = new Student(newName, newAge, newGender); } } writeStudentsToFile(students); }成功执行了但为什么没有实现
可能是因为在遍历 `students` 列表时,虽然修改了 `student` 对象的值,但是并没有将修改后的对象重新放回 `students` 列表中。可以考虑使用一个临时的列表来存储修改后的对象,再将临时列表中的元素复制回原列表中。可以尝试将代码修改如下:
```
private static void modifyStudent() throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要修改的学生姓名:");
String name = scanner.nextLine();
List<Student> students = readStudentsFromFile();
List<Student> updatedStudents = new ArrayList<>(); // 临时列表
for (Student student : students) {
if (student.getName().equals(name)) {
System.out.println("请输入新的学生姓名:");
String newName = scanner.nextLine();
System.out.println("请输入新的学生年龄:");
int newAge = scanner.nextInt();
scanner.nextLine();
System.out.println("请输入新的学生性别:");
String newGender = scanner.nextLine();
student = new Student(newName, newAge, newGender);
}
updatedStudents.add(student); // 将修改后的对象放入临时列表中
}
writeStudentsToFile(updatedStudents); // 将临时列表中的元素复制回原列表中
}
```
阅读全文