Java 为什么我的display()方法不能打印出所有ArrayList元素?
我有一个类容器,用户应该能够在其中输入任意数量的单词,直到他什么也不键入。我有addWord(Word)方法,每次运行do/while循环时,每个输入都被添加到ArrayList单词中。每次循环运行时,我都将用户输入值作为参数传递给addWord()方法 现在,我想在do/While循环停止运行后,使用display()方法显示数组的所有元素。但由于某种原因,当我尝试调用display()方法时,它只显示一个空数组[] 你有什么办法可以帮忙吗Java 为什么我的display()方法不能打印出所有ArrayList元素?,java,arraylist,java.util.scanner,Java,Arraylist,Java.util.scanner,我有一个类容器,用户应该能够在其中输入任意数量的单词,直到他什么也不键入。我有addWord(Word)方法,每次运行do/while循环时,每个输入都被添加到ArrayList单词中。每次循环运行时,我都将用户输入值作为参数传递给addWord()方法 现在,我想在do/While循环停止运行后,使用display()方法显示数组的所有元素。但由于某种原因,当我尝试调用display()方法时,它只显示一个空数组[] 你有什么办法可以帮忙吗 import java.util.ArrayList
import java.util.ArrayList;
import java.util.List;
public class Container {
private List<String> words;
public Container() {
}
public List<String> getWords() {
return words;
}
public void setWords(List<String> words) {
this.words = words;
}
public void addWord(String word) {
words = new ArrayList<String>();
words.add(word);
}
public void display() {
System.out.println(words);
}
}
查看您的
addWord
方法:
public void addWord(String word) {
words = new ArrayList<String>();
words.add(word);
}
public void addWord(字符串字){
words=newarraylist();
添加(word);
}
每次你打这个电话,它都会创建一个新的列表,这样你就永远不会有一个以上的单词出现在列表中
第一行,初始化单词,应该在构造函数中(或作为字段初始值设定项)。然后从addWord
中删除该行-理想情况下使words
字段同时成为最终字段,以避免将来出现类似错误,并删除setWords
方法,除非您确实需要它来做其他事情
在容器
中,这一切都是错误的(尽管不清楚它是否真的提供了除了直接使用列表
之外的任何价值)。如注释中所述,当前main
中的do/while循环将在末尾添加一个空字符串。此外,在循环之后检查word
是否为空也没有意义——必须是空的,否则就不会退出循环 看看你的addWord
方法:
public void addWord(String word) {
words = new ArrayList<String>();
words.add(word);
}
public void addWord(字符串字){
words=newarraylist();
添加(word);
}
每次你打这个电话,它都会创建一个新的列表,这样你就永远不会有一个以上的单词出现在列表中
第一行,初始化单词,应该在构造函数中(或作为字段初始值设定项)。然后从addWord
中删除该行-理想情况下使words
字段同时成为最终字段,以避免将来出现类似错误,并删除setWords
方法,除非您确实需要它来做其他事情
在容器
中,这一切都是错误的(尽管不清楚它是否真的提供了除了直接使用列表
之外的任何价值)。如注释中所述,当前main
中的do/while循环将在末尾添加一个空字符串。此外,在循环之后检查word
是否为空也没有意义——必须是空的,否则就不会退出循环 另外,do while部分将向ArrayList中添加一个空字符串作为word。@Ladislav\u M:True。我会在答案中记下这一点。谢谢大家:)另外,为了避免打印最后一个空字符串,我应该在调用display()之前删除最后一个数组元素,还是有更好的方法?@Joe如果你是初学者,最简单的解决方案是对输入调用.trim()方法,看看长度是否大于零,如果是,则将其添加到ArrayList@乔:有各种不同的方法,但这与你所问的完全不同。我建议您尝试各种方法,如果遇到问题,可以问一个新问题。另外,do while部分将在ArrayList中添加一个空字符串作为word。@Ladislav_M:True。我会在答案中记下这一点。谢谢大家:)另外,为了避免打印最后一个空字符串,我应该在调用display()之前删除最后一个数组元素,还是有更好的方法?@Joe如果你是初学者,最简单的解决方案是对输入调用.trim()方法,看看长度是否大于零,如果是,则将其添加到ArrayList@乔:有各种不同的方法,但这与你所问的完全不同。我建议您尝试各种方法,如果遇到问题,可以问一个新问题。每次调用addWord方法时,都要重新初始化ArrayList。您将只有上次调用中传递的单词。每次调用addWord方法时,您都会重新初始化ArrayList。您将只有上次调用中传递的单词。