一 问题描述
写了一个Student类如下:
public class Student {
private String number;
private String name;
private int age;
private String address;
public Student() {
}
public Student(String number, String name, int age, String address) {
this.number = number;
this.name = name;
this.age = age;
this.address = address;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
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;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
写了一个添加学生信息的方法如下:
public static void addInfo(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
String number;
while(true) {
System.out.println("请输入学生的学号: ");
number = sc.nextLine();
boolean flag = false;
for(int i=0; i<array.size(); i++) {
Student s = array.get(i);
if(s.getNumber().equals(number)) {
flag = true;
break;
}
}
if(flag) {
System.out.println("您输入的学号已经存在,请重新输入!");
}else {
break;
}
}
System.out.println("请输入学生的姓名: ");
String name = sc.nextLine();
System.out.println("请输入学生的年龄: ");
int age = sc.nextInt();
System.out.println("请输入学生的居住地: ");
String address = sc.nextLine();
Student s = new Student();
s.setNumber(number);
s.setName(name);
s.setAge(age);
s.setAddress(address);
array.add(s);
System.out.println("学生信息添加成功!");
}
然后,在main下调用:
public static void main(String[] args) {
ArrayList<Student> array = new ArrayList<Student>();
addInfo(array);
}
但是,添加学生信息时发现了问题:程序到输入年龄之后就不让输入居住地,直接执行后面的语句了。
请输入学生的学号:
001
请输入学生的姓名:
可乐
请输入学生的年龄:
12
请输入学生的居住地:
学生信息添加成功!
后来我把年龄变量定义为String类型之后就正常了。猜测是因为数据类型问题。