我有一个长度为3的输入字符串数组(称为inputArray_1)。我有另一个字符串数组(称为关键字),其关键字如下:
System.out.println("Input 1:");
for (int i = 0; i < inputArray_1.length; i++)
{
inputArray_1[i] = reader.nextLine();
}
String[] keywords = {"dog", "cat", "monkey", "apple"};
inputArray_1的输出可能如下所示:
The dog had many friends.
所以我想检查数组的每个索引,看看每个索引的字符串是否包含任何关键字。它不必包含所有关键字中的一个。
到目前为止,我有这个,并没有给我正确的输入。
for(int i = 0; i < inputArray_1.length; i++)
{
if(inputArray_1[i].contains(keywords[i]))
{
System.out.println("YAY");
}
else
System.out.println("BOO");
}
答案 0 :(得分:1)
与everyones解决方案一起,如果你想测试一些java 8 Stream 和 lambda 以下是你可以轻松完成的方式
String[] keywords = {"dog", "cat", "monkey", "apple"};
Arrays.stream(inputArray_1).forEach(
input -> {
if (Arrays.stream(keywords).anyMatch(input::equals)) {
System.out.println("YAY");
} else {
System.out.println("BOO");
}
});
inputArray_1
的Stream并使用forEach
keywords
数组匹配。 anyMatch
这里为您提供布尔值true
(如果存在)和false
(如果不存在)。您只是使用该逻辑来打印输出如果你对这个很酷的 Java 8 的东西感兴趣的话。挖掘此Java 8 Stream Tutorial以更好地了解 Stream API 和 Lambda 的工作原理。还有Check if Array contains a certain value
的特定教程答案 1 :(得分:0)
假设inputArray_1是一个由于在空格上拆分而产生的String数组,则需要某种类型的内部循环来检查输入数组中的当前String,而不是关键字数组中的所有字符串。如下所示:
String [] inputArray_1 = new String [] {"word3","word2","word3"};
String [] keywords = new String [] {"word1","word3"};
outerloop:
for(int i = 0; i < inputArray_1.length; i++) {
for (int j = 0; j < keywords.length; j++) {
if(inputArray_1[i].equals(keywords[j])){
System.out.println("YAY");
continue outerloop;
}
}
System.out.println("BOO");
}
答案 2 :(得分:0)
对第一个循环中的关键字使用另一个循环来检查关键字列表中的每个元素。
答案 3 :(得分:0)
如果inputArray_1
包含句子(带有空格和&gt; 1个字词的字符串),您可能需要遍历每个关键字以检查当前句子,或inputArray_1[i]
,.contains()
那个关键字。
但如果你的inputArray_1
只包含单个单词/无句子的值,那么你可以只有一个循环。
//This will only work if inputArray_1 contains no sentences, just single words
for(int i = 0; i < inputArray_1 .length; i++)
{
if(keywords.contains(inputArray_1[i]))
{
System.out.println("YAY");
}
else
{
System.out.println("BOO");
}
}