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 11:28:12 浏览: 15
这段代码是一个简单的 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() 方法将换行符读取并丢弃。
相关问题
import java.util.Scanner; public class ScannerExample { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个整数: "); int num = scanner.nextInt(); System.out.println("您输入的整数是: " + num); System.out.print("请输入一个浮点数: "); double decimal = scanner.nextDouble(); System.out.println("您输入的浮点数是: " + decimal); System.out.print("请输入一个字符串: "); String str = scanner.nextLine(); System.out.println("您输入的字符串是: " + str); } }
这段代码使用了Scanner类来读取用户的输入,并打印出输入的整数、浮点数和字符串。
代码的功能已经很明确了,不需要额外的注释。但是需要注意一个问题,就是在读取字符串之前需要先调用`nextLine()`方法读取换行符,以避免直接读取到换行符而跳过输入。可以将以下代码修改如下:
```java
import java.util.Scanner;
public class ScannerExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个整数: ");
int num = scanner.nextInt();
System.out.println("您输入的整数是: " + num);
System.out.print("请输入一个浮点数: ");
double decimal = scanner.nextDouble();
System.out.println("您输入的浮点数是: " + decimal);
scanner.nextLine(); // 读取换行符
System.out.print("请输入一个字符串: ");
String str = scanner.nextLine();
System.out.println("您输入的字符串是: " + str);
}
}
```
现在代码应该能够按预期工作了。如果还有其他问题,请随时提问!
public static void main(String[] args) { HashMap<String,String>map=new HashMap<>(); System.out.println("-------欢迎使用学生管理系统-------"); System.out.println("请选择查询信息"); System.out.println("老师,学生,科目"); Scanner scanner=new Scanner(System.in); String number=scanner.nextLine(); switch (number) { case"老师": System.out.println("请输入想要存储老师的人数"); Scanner scanner1=new Scanner(System.in); int number1=scanner.nextInt(); System.out.println("请先输入老师的信息:"); for (int i=1;i<=number1;i++) { Scanner scanner2=new Scanner(System.in);//往哈西表里存老师的信息并输出; String key=scanner.nextLine(); String value=scanner.nextLine(); map.put(key,value); } for (String key : hashMap.keySet()) { String value = hashMap.get(key); System.out.println(key + ":" + value); } } }这段代码为啥会报错
这段代码会报错是因为在遍历 HashMap 的时候,使用了错误的变量名。在 for 循环中,应该使用 `map` 而不是 `hashMap`。
以下是代码修改后的正确版本:
```
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
System.out.println("-------欢迎使用学生管理系统-------");
System.out.println("请选择查询信息");
System.out.println("老师,学生,科目");
Scanner scanner = new Scanner(System.in);
String number = scanner.nextLine();
switch (number) {
case "老师":
System.out.println("请输入想要存储老师的人数");
Scanner scanner1 = new Scanner(System.in);
int number1 = scanner.nextInt();
System.out.println("请先输入老师的信息:");
for (int i = 1; i <= number1; i++) {
Scanner scanner2 = new Scanner(System.in);
String key = scanner.nextLine();
String value = scanner.nextLine();
map.put(key, value);
}
for (String key : map.keySet()) {
String value = map.get(key);
System.out.println(key + ":" + value);
}
}
}
```
这样就可以正确地往 HashMap 中存储信息,并遍历输出它们了。