Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法理解为什么ArrayList.add()为';他不为我工作 public void findWord(字符串字){ wordsOnBoard=newArrayList(); if(字典包含(单词)){ System.out.println(word); 添加(word); }否则{ System.out.println(“未找到”); } System.out.println(字板); }_Java_Arraylist - Fatal编程技术网

Java 无法理解为什么ArrayList.add()为';他不为我工作 public void findWord(字符串字){ wordsOnBoard=newArrayList(); if(字典包含(单词)){ System.out.println(word); 添加(word); }否则{ System.out.println(“未找到”); } System.out.println(字板); }

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

wordsOnBoard是一个全局数组列表


当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);
}