我正在尝试在数组中搜索一些特定字符串,这些字符串来自句子中的单词。最终这个句子将由用户输入,但我现在已对其进行硬编码以使测试更容易。如果程序找到字符串,则应返回“是”,如果不是则返回“否”。问题是我一直都是肯定的。
public class main {
public static void main(String[]args)
{
String Sentence = "This is a sentence";
String[] CensorList =
{"big","head"};
String[] words = Sentence.split(" ");
System.out.println(words.length);
boolean match = false;
for(int i = 0; i < words.length; i++)
{
for (int j = 0; j < CensorList.length; j++)
{
if(words[i].equals(CensorList[j]))
{
match = true;
}else{
match = false;
}
}
}
if (match = true){
System.out.println("Yes");}
else{
System.out.println("No");
}
} }
我非常感谢您对这一方面的任何帮助,提前致谢。
答案 0 :(得分:2)
你的第二个for()中的if有错误的括号。
试试这个:
for (int j = 0; j < CensorList.length; j++)
{
if(words[i].equals (CensorList[j])) {
match = true;
System.out.println("Yes");
} else {
System.out.println("No");
}
match = false;
}
第二次尝试:
的
if (match = true)
不匹配true,它将match标志设置为true,结果始终为true。
比较你的if:
中的标志if (match == true) // or simply if (match)
{ ....
答案 1 :(得分:1)
试一试:
for(int i = 0; i < words.length; i++)
{
for (int j = 0; j < CensorList.length; j++)
{
if(words[i].equals (CensorList[j]))
match = true;
}
if (match) {
System.out.println("Yes"); }
else {
System.out.println("No"); }
match = false;
}
答案 2 :(得分:1)
我认为你在这里有一些错别字。
for (int j = 0; j < CensorList.length; j++)
{
if(words[i].equals (CensorList[j]));
}
这基本上什么都不做,因为如果表达式被评估为true,则if无关。然后在循环之后将匹配设置为true,所以它始终为true,并且始终打印“是”
答案 3 :(得分:1)
您可以为此
使用简单的基于RegEx的解决方案private static boolean test(String value) {
String[] CensorList = { "This", "No" };
for (String string : CensorList) {
Pattern pattern = Pattern.compile("\\b" + string + "\\b", Pattern.CASE_INSENSITIVE);
if (pattern.matcher(value).find()) {
return true;
}
}
return false;
}
然后
String string = "This is a sentence";
if(test(string)){
System.out.println("Censored");
}
答案 4 :(得分:0)
包含功能可能就是答案:
str1.toLowerCase().contains(str2.toLowerCase())
答案 5 :(得分:0)
您没有使用String.indexOf(String)
的任何原因?
另一个问题是如果你在相同(非常大)的搅拌中反复这样做,在这种情况下,你可能想要研究更复杂的算法,如suffix trees,甚至使用像Apache Lucene这样的专业软件
答案 6 :(得分:0)
尝试使用
public class main {
public static void main(String[]args)
{
String Sentence = "This is a sentence";
String[] CensorList =
{"This","No"};
String[] words = Sentence.split(" ");
System.out.println(words.length);
boolean match = false;
for(int i = 0; i < words.length; i++)
{
for (int j = 0; j < CensorList.length; j++)
{
if(words[i].compareTo(CensorList[j])==0)
{
System.out.println("Yes");
}
else{System.out.println("No");}
}
}
}