import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Person {
public enum Sex {
Male, Female
}
String Name;
int Age;
Sex Gender;
String EmailAddress;
public int getAge() {
return Age;
}
static public Person getInstance() {
return new Person();
}
public String getPerson() {
return Name;
}
}
public class TestPerson {
public static void main(String...args) {
List list = new ArrayList();
list.add(Person.getInstance());
list.add(Person.getInstance());
Scanner s = new Scanner(System. in );
for (int i = 0; i < 1; i++) {
System.out.println(list.get(i).Name = s.nextLine());
System.out.println(list.get(i).Age = s.nextInt());
}
s.close();
}
}
像Eric爵士所说的那样使用泛型:
List<Person> = new ArrayList<Person>();
另外:当您在nextInt();
之后使用nextLine();
方法时,
nextLine();
将在下一次迭代中将"n"
作为其输入,因为nextInt();
只取下一个整数令牌,而不取Enter Button ("n")
,在code
的情况下,CCD_6由下一个iteration
的nextLine();
取用。
要么使用
- 10而不是CCD_ 11
或
只需使用
nextLine();
跳过"n"
,如下所示:public static void main(String...args) { List<Person> = new ArrayList<Person>(); list.add(Person.getInstance()); list.add(Person.getInstance()); Scanner s = new Scanner(System. in ); for (int i = 0; i < 1; i++) { System.out.println(list.get(i).Name = s.nextLine()); System.out.println(list.get(i).Age = s.nextInt()); s.nextLine(); //skips the "n" } s.close(); }
在声明列表时需要使用泛型。
List<Person> = new ArrayList<Person>();
现在编译器知道您打算用Person
对象而不是常规的Objects
来填充这个列表。在没有泛型的情况下,它假设列表将填充对象,这些对象没有Name
和Age
作为变量,因此编译器会抱怨。