【发布时间】:2015-03-03 14:52:44
【问题描述】:
我有一个字符串数组:
String[] array = {"the","juice"};
和另一个带有一些文本的字符串:
String text = "the juice we had yesterday was great!";
和一个函数,它基本上检查数组中的单词是否存在于文本中,如果存在则打印字符串。
这很简单,但是我在输出中得到了重复的行,因为 for 循环一次检查一个单词。由于两者都存在于字符串中,文本将被打印两次。
这是我的代码,用于说明目的:
public void filter (String[] words, String text){
for(int i = 0; i < words.length; i++){
if(text.toLowerCase().contains(words[i].toLowerCase()))
System.out.println(text);
}
}
我该如何解决这个问题?
正确的输出应该是一行的打印。
更新:
考虑读取一个文本文件,而不仅仅是一个字符串:
public void filter (String[] words, BufferedReader text){
String line = text.readLine();
for(int i = 0; i < words.length; i++){
if(line.toLowerCase().contains(words[i].toLowerCase()))
System.out.println(text);
}
line = text.readLine();
}
【问题讨论】:
-
当第一次出现时你不考虑简单的
return吗? -
是否仅当数组中的所有单词都存在于字符串中或找到任何单词时才打印?
-
不够清楚。您是否只想在数组中的所有单词都出现在您的文本中时才打印?或者找到匹配项后打印?
-
@Andremoniy 是的,但是对于多行文本,例如,来自一个不起作用的文件
-
@laker001 哦,真的吗?我不信,找你逻辑错误