/*
Profanity Filter:
- Cat
- Dog
- LLama
- Has to differ cases, like cAt
- Has to differ words that contain the words to be filtered, "Cataclysm", for example. Hello, World of Warcraft.
*/
import java.util.Scanner;
public class ProfanityFilter
{
public static void main (String[] args)
{
Scanner kb = new Scanner(System.in);
String userInput, toLowerCase;
boolean flag = false;
int i;
String[] list = new String[12];
list[0] = "cat";
list[1] = " cat";
list[2] = "cat ";
list[3] = " cat ";
list[4] = "dog";
list[5] = " dog";
list[6] = "dog ";
list[7] = " dog ";
list[8] = "llama";
list[9] = " llama";
list[10] = "llama ";
list[11] = " llama ";
System.out.println("Enter a string:");
userInput = kb.nextLine();
toLowerCase = userInput.toLowerCase();
for (i = 0; i < list.length; i++)
{
if(toLowerCase.contains(list[i]) | toLowerCase.equals(list[i]))
{
flag = true;
}
}
if (flag)
{
System.out.println("Something you said is forbidden.");
}
else
{
System.out.println("Nothing was found");
}
}
}我只是很难找到我需要的合适的例外。我知道我已经很接近了,但是在尝试了许多小时来解决这个问题之后,我也很累了,并且没有一个为我需要的实例(数组中的实例)返回true的解决方案。你能指出我在这里做错了什么或者没有正则表达式的正确的解决方案吗?
我已经尝试了一个中断;在我将布尔标志转换为true (但它没有工作)之后,它一直在迭代,因此输出仍然是false。
谢谢!
发布于 2017-02-24 19:41:35
以下是一个潜在的解决方案:
public class Class {
private static final String[] profaneWords = {
"cat",
"dog",
"llama"
};
public static void main(String... args) {
System.out.println(isProfane("this is some user input."));
System.out.println(isProfane("this is some user input containing the dirty word 'Cat'."));
System.out.println(isProfane(" cat "));
System.out.println(isProfane("Cat"));
}
private static boolean isProfane(final String input) {
for (final String profanity : profaneWords) {
if (input.toLowerCase().contains(profanity)) {
return true;
}
}
return false;
}
}下面是一个流java8版本:
import java.util.Arrays;
public class Class {
private static final String[] profaneWords = {
"cat",
"dog",
"llama"
};
private static boolean isProfane(final String input) {
return Arrays.stream(profaneWords)
.anyMatch(input.toLowerCase()::contains);
}
}https://stackoverflow.com/questions/42446637
复制相似问题