我必须创建一个列表,比如说50个人(在Java中)并显示列表,我真的不知道该怎么做。所以这就是我到目前为止所做的。请更正并完成我的部分代码。
public class Person {
String name;
String stuff;
}
public class CreatePerson {
public static void ang() {
ArrayList<Person> thing=new ArrayList<Person>();
Scanner diskScanner = new Scanner(in);
for(int i=0; i<50; i++){
Person pers = new Person();
out.print("name: ");
pers.name=diskScanner.nextLine();
out.print("stuff: ");
pers.stuff=diskScanner.nextLine();
thing.add(pers);
break;
}
// Display people
for (int i=0; i<50; i++) {
out.println(??);{
}
} }}
答案 0 :(得分:7)
您可以使用以下构造浏览列表:
for (Person person: thing) {
System.out.println(person.name + " " + person.stuff);
}
另外:
答案 1 :(得分:1)
for (Person p : thing) {
System.out.println(p);
}
这假设Person
有合理的@Override public String toString()
用于打印。否则,只需根据需要访问p
的成员。
答案 2 :(得分:0)
看起来很好。
我只想提出几点建议:
1.-从System:
导入out
属性
import static java.lang.System.out;
2.-在for循环中删除break
...
for(int i=0; i<50; i++){
Person pers = new Person();
out.print("name: ");
pers.name=diskScanner.nextLine();
out.print("stuff: ");
pers.stuff=diskScanner.nextLine();
thing.add(pers);
break; //<-- Remove this to continue with the remaining 49 persons
}
3.-最后你可以打印这样的值:
// Display people
for (int i=0; i<50; i++) {
//out.println(??);{
//}
// could be:
out.println("name: "+ thing.get(i).name +" stuff:"+thing.get(i).stuff );
}
...
修改强>
印刷品的替代品:
// introduce a variable p
for (int i=0; i<50; i++) {
Person p = thing.get(i);
out.println("name: "+ p.name +" stuff:"+p.stuff );
}
或者
// using the size of the array and printf..
for (int i=0; i<thig.size(); i++) {
Person p = thing.get(i);
out.printf("name: %s stuff: %s %n", p.name ,p.stuff );
}
甚至更好(我的首选)
// using the for-each syntax
for( Person p : thing ) {
out.printf("name: %s stuff: %s %n", p.name ,p.stuff );
}
答案 3 :(得分:0)
// put the following in a file named CreatePerson.java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
class Person {
String name;
String stuff;
@Override public String toString() {
return "Name: " + name + ", Stuff: " + stuff;
}
}
public class CreatePerson {
public static void main(String[] args) {
List<Person> people = new ArrayList<Person>(50);
Scanner scanner = new Scanner(System.in);
for(int i = 1; i <= 50; i++) {
Person p = new Person();
System.out.println("Enter person #" + i);
System.out.print("Name: ");
p.name = scanner.nextLine();
System.out.print("Stuff: ");
p.stuff = scanner.nextLine();
people.add(p);
}
System.out.println("The following people were added:");
for(Person p : people) {
System.out.println(p);
}
}
}
使用以下命令编译程序:javac CreatePerson.java
使用以下命令运行程序:java CreatePerson
答案 4 :(得分:0)
我建议替换
ArrayList<Person> thing=new ArrayList<Person>();
带
List<Person> thing=new ArrayList<Person>(50);
通过指定列表的长度来避免可能的重新分配,效率更高。 它使用接口而不是类(更容易切换实现,例如。)。
还要考虑将Person属性设为私有,并使用getter / setter来处理它们。
答案 5 :(得分:0)
我有更好的升级到你的班级,以便更好。您可以在JavaBean类中转换类Person,添加方法setName(String name)
和setStuff(String stuff)
,并添加方法getName()
和getStuff()
以检索值。
您可以将这些方法定义为public,将字段名称和内容定义为private,以保护数据。您可以设置值,如
p.setName(scanner.nextLine());
p.setStuff(scanner.nextLine());
并打印在for循环中使用p.getName()
和p.getStuff()
提取Person引用的值
感谢。