在输入数据时,我们常常使用回车来切换输入下一条数据。
在下面这个例子中,在第一次输入姓名回车后,nextLine()会吸收掉回车,所以再输入年龄时获取的数据就是正常的。但是第二次循环时,因为第一次输入年龄后输入了回车,这个回车事实上被第二次循环的nextLine()获取了,所以此时再像第一次一样输入姓名和年龄会报错,因为nextInt()获取到的是姓名,类型不匹配。
package day9;
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList<String> s=new ArrayList<String>();
Scanner sc=new Scanner(System.in);
ArrayList<Student> studentArr=new ArrayList<Student>();
Student student=new Student();
for (int i=0;i<2;i++){
System.out.println("请输入姓名和年龄:");
student.setName(sc.nextLine());
student.setAge(sc.nextInt());
studentArr.add(student);
sc.nextLine();
}
for (int i=0;i<studentArr.size();i++){
student=studentArr.get(i);
System.out.println("用户的姓名和年龄是:"+student.getName()+" "+student.getAge());
}
}
}
本文探讨了在Java编程中使用ArrayList和Scanner进行用户输入时遇到的问题。主要集中在回车字符如何影响nextInt()和nextLine()的交互,导致输入错误。文章通过示例代码解释了当回车键被nextLine()吸收后,如何导致nextInt()读取到不期望的数据,进而引发类型不匹配的异常。解决方案和避免此类问题的实践建议也被提及。
127

被折叠的 条评论
为什么被折叠?



