我对这个ArrayList有点打嗝。我试图将String数组中的一个或多个元素存储到Array列表中,并将其分配给某个字符串变量。我的目标是将关键字存储到数组列表中,我可以用它来搜索文本文件。我似乎无法将找到的关键字存储到数组列表中有人可以帮我解决这个问题吗?这是我的代码中的一些片段。
public static void main(String args[]) throws ParseException, IOException
{
List<String> matches = new ArrayList<String>();
String[] keywords = {"day", "book", "office", "hour",
"date of a test", "number of assignments", "sure",
"current assignment", "due day"};
System.out.println("What would you like to know?");
System.out.print("> ");
input = scanner.nextLine().toLowerCase();
int count = 0;
for (int i = 0; i < keywords.length; i++) {
if (input.contains(keywords[i])) {
matches.add(keywords[i]);
parseFile(keywords[i]);
}
}
}
这是我的parseFile方法
public static void parseFile(String s) throws FileNotFoundException {
File file = new File("data.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine())
{
final String lineFromFile = scanner.nextLine();
if (lineFromFile.contains(s)) {
// a match!
System.out.println(lineFromFile);
// break;
}
}
}
答案 0 :(得分:0)
我要做的第一件事就是检查这些东西是否真的进入阵列,所以我有这个:
if(matches.size() == 0)
{
System.out.println("There's nothing in here");
}
至少你知道那里什么都没有,所以那时候没有必要做其余的程序。您应该尽可能早地测试退出状态,这样可以节省一些时间和精力,并且可以更快地进行调试。但我离题了。
因此,要将内容添加到数组列表中,您需要执行以下操作:
for (int i = 0; i < keywords.length; i++)
{
String value = keywords[i];
System.out.println("Current Value is: " + value);
matches.add(value);
}
您不能只添加一个数组元素,因为ListArray中的add方法需要一个String。所以你需要将数组的当前内容设置为String,然后将THAT传递给你的matches.add函数,如上所述,所以当我在我的盒子上运行那个程序时,(只是主要的那个)我得到了以下输出
Current Value is: day
Current Value is: book
Current Value is: office
Current Value is: hour
Current Value is: date of a test
Current Value is: number of assignments
Current Value is: sure
Current Value is: current assignment
Current Value is: due day
Size of matches is: 9
Matches[i]: day
Matches[i]: book
Matches[i]: office
Matches[i]: hour
Matches[i]: date of a test
Matches[i]: number of assignments
Matches[i]: sure
Matches[i]: current assignment
Matches[i]: due day
同样为了记录,你也需要在迭代匹配时也这样做,所以让我们说你要打印出你的ArrayList,然后你需要执行以下操作:
for(int i = 0; i < matches.size(); i++)
{
String value = matches.get(i);
System.out.println("Matches[i]: " + value);
}
你需要在数组列表中获取字符串,你不能只给它一个索引,因为它不起作用,你需要再将它分配给一个字符串然后传回去
如果有疑问,请继续阅读Java ArrayList API,并查看函数所使用的参数。
希望有所帮助。