Java 无法理解为什么ArrayList.add()为';他不为我工作 public void findWord(字符串字){ wordsOnBoard=newArrayList(); if(字典包含(单词)){ System.out.println(word); 添加(word); }否则{ System.out.println(“未找到”); } System.out.println(字板); }
wordsOnBoard是一个全局数组列表Java 无法理解为什么ArrayList.add()为';他不为我工作 public void findWord(字符串字){ wordsOnBoard=newArrayList(); if(字典包含(单词)){ System.out.println(word); 添加(word); }否则{ System.out.println(“未找到”); } System.out.println(字板); },java,arraylist,Java,Arraylist,wordsOnBoard是一个全局数组列表 当dictionary.contains(word)打印出单词,然后将其添加到WordsBoard,但当它离开if循环时,单词不再位于ArrayList WordsBoard中。如何解决此问题?每次输入该方法时,您都会创建一个新的ArrayList 然后(有时)向其添加一些内容,一旦离开该方法,该对象将符合GC的条件 如果您想保留它,您可能应该将数组列表放入类的字段中。如果您没有返回列表,我建议您试试 public void findWord(Stri
当dictionary.contains(word)打印出单词,然后将其添加到WordsBoard,但当它离开if循环时,单词不再位于ArrayList WordsBoard中。如何解决此问题?每次输入该方法时,您都会创建一个新的
ArrayList
然后(有时)向其添加一些内容,一旦离开该方法,该对象将符合GC的条件
如果您想保留它,您可能应该将
数组列表
放入类的字段中。如果您没有返回列表
,我建议您试试
public void findWord(String word) {
wordsOnBoard = new ArrayList<String>();
if (dictionary.contains(word)) {
System.out.println(word);
wordsOnBoard.add(word);
} else {
System.out.println("None found");
}
System.out.println(wordsOnBoard);
}
//传入列表引用,然后它就不会超出范围。
public void findWord(列表字板、字符串字){
if(字典包含(单词)){
System.out.println(word);
添加(word);
}否则{
System.out.println(“未找到”);
}
System.out.println(字板);
}
或者,您可以将WordsBoard
设置为类中的字段。删除此行:
wordsOnBoard=newArrayList()
并将其放在实际定义全局变量的位置
当您的函数进入作用域时,此WordsBoard将获得一个本地ArrayList,其生命周期仅限于函数本身的生命周期。一旦函数退出,垃圾回收将销毁该对象。哪个循环?外环
wordsOnBoard
是一个局部变量。什么循环?你还没有写一个循环。如果在循环中调用此项,是否希望在调用之间保留列表?您正在使用一个局部变量,并在每次执行if语句时创建一个新实例。它不应该将传入方法的每个新字符串添加到arraylist中吗?@user3044102位于本地arraylist
中,当方法返回时,它会被垃圾收集。
// pass in your List reference, and then it won't go out of scope.
public void findWord(List<String> wordsOnBoard, String word) {
if (dictionary.contains(word)) {
System.out.println(word);
wordsOnBoard.add(word);
} else {
System.out.println("None found");
}
System.out.println(wordsOnBoard);
}