【发布时间】:2015-12-28 23:06:41
【问题描述】:
我正在将文本文件中的数据读入 ArrayList,然后尝试在该 ArrayList 中搜索特定字符串(第二种方法)。
我相信我正确地读取了数据,但是一旦它被填充,我正在努力编写在 ArrayList 上实现的方法。例如,在下面的检查方法中,当我确定输入字符串在数据结构中时,它返回 false。
我认识到这可能是我的变量范围或我的方法如何相互交互的问题(即,当我检查它时,arraylist 实际上没有填充数据)。
任何帮助将不胜感激 - 谢谢
import java.util.*;
import java.io.*;
public class Word {
ArrayList<String> diclist = new ArrayList<String>();
private void readIn() throws FileNotFoundException {
File file = new File("filepath");
Scanner s = new Scanner(file);
s.useDelimiter("\n");
while (s.hasNextLine()) {
diclist.add(s.nextLine());
}
s.close();
}
public boolean checkIn(String z) {//Check if input string z is in diclist
for (int i = 0; i < diclist.size(); i++) {
if (diclist.get(i).equals(z)) {return true;}
}
return false;
}
}
【问题讨论】:
-
"I recognize this is likely a problem with my variable scope or how my methods are interacting with each other..."-- 那么,你如何调用这段代码?filepath中有什么内容?你将什么作为参数传递给checkIn()? -
尝试打印 ArrayList 的内容,以及 check 方法中的 z 值。然后你就可以看到内容是否真的如你所愿。
-
请发布您的文件内容(如果文件太大,则只发布一个 sn-p)和您要查找的字符串。请注意,您的
equals支票区分大小写。顺便说一句:你在这段代码中正确使用了diclist,所以它看起来不像变量范围的问题。 -
我的直觉是你从来没有打电话给
readIn()。您不能从您发布的Word类内部调用,因为它是private,所以您不能从其他任何地方调用它。在空的ArrayList上调用checkIn()将始终返回false。 -
Azurefrog 你是完全正确的。我没有调用 readIn 方法来初始化数组。谢谢大家的帮助。