这是一个添加和打印 worker 的小程序。当调用方法进行打印时,我收到的输出中包含相同元素的次数与我添加的元素数一样多。我不明白我的错误在哪里。
public class Radnik {
static List<Radnik> workers = new ArrayList<>();
private String name;
public static void main (String []args) {
Radnik.add();
for(Radnik r : workers) {
System.out.println(r);
}
}
public static void add () {
String name;
String answer;
do {
Scanner s = new Scanner(System.in);
System.out.println("name");
name = s.next();
Radnik f = new Radnik();
workers.add(f);
System.out.println("More");
answer = s.next();
} while (answer.equals("yes"));
}
}
最佳答案
永远不要将name
设置为Radnik
。
我会添加构造函数 Radnik(String name)
来初始化 name
并添加一个 getter 和 setter。
System.out.println(r)
只会打印废话,因为它调用了 Object.toString()
.您必须覆盖 toString()
或调用其他方法来输出有意义的内容。
public class Radnik {
static List<Radnik> workers = new ArrayList<>();
private String name;
public Radnik(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Radnik=[name=\""+name+"\"]";
}
public static void main (String []args) {
Radnik.add();
for(Radnik r : workers) {
System.out.println(r);
}
}
public static void add () {
String name;
String answer;
do{
Scanner s = new Scanner(System.in);
System.out.println("name");
name = s.next();
Radnik f = new Radnik(name);
workers.add(f);
System.out.println("More");
answer = s.next();
} while (answer.equals("yes"));
}
}
关于java - 打印出 arraylist 元素时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48370931/