我遇到了一些问题,当我在类中添加一个int属性时,下面的代码停止工作,代码在询问“希望继续”时结束...将代码运行良好的那些行。怎么了?
public static void main(String[] args) {
ArrayList<Humano> lista = new ArrayList<>();
Scanner input = new Scanner(System.in);
String userInput;
do {
Humano h = new Humano();
System.out.println("Name");
h.setName(input.nextLine());
System.out.println("age");//<-----------
h.setAge(input.nextInt());//<----------this lines causes problems
lista.add(h);
System.out.println("wish to continue?");
userInput = input.nextLine();
} while (!userInput.equalsIgnoreCase("NO"));
类人类
public class Humano {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
答案 0 :(得分:2)
首先回答:)
Scanner#nextInt()
方法不会消耗输入的最后一个换行符,因此会消耗下一个可用的换行符()。最好的解决方法是在使用input.nextline()
,nextInt()
和next()
方法后添加nextFoo()
。
如需更多答案,请查看: Scanner is skipping nextLine() after using next(), nextInt() or other nextFoo() methods