我被困在了一个分配上!请帮忙!作业要求
我们希望为用户提供过滤亵渎性语言的选项。假设我们认为猫,狗和美洲驼这两个词是亵渎的。编写一个程序,从键盘读取一个字符串,并测试该字符串是否包含我们的亵渎词。让您的程序仅拒绝包含亵渎词的行。例如,Dogmatic连接是一个小类别。这句话不应该被视为亵渎。 我知道== 0是错的但是,我希望它没有“灾难”这个词,不要亵渎并打印出一句“风暴是大灾变”而不是亵渎
import java.util.*;
public class Profanity {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String words;
System.out.println("Enter a sentence");
words = in.nextLine();
words = words.toLowerCase();
if (words.indexOf("cat") !=-1)
{
if(words.length()==3)
System.out.println("cats by itself censored!");
else if(words.indexOf("cat ")==0)
System.out.println("cat is in the beginning censored!");
else if(words.indexOf(" cat ")!=-1)
System.out.println("cat is in the string censored!");
else if(words.indexOf(" cat")==0); //<-- ==0 is def wrong, please help
System.out.println("cat is at the end censored!"); }
else
System.out.println(words);
}}
答案 0 :(得分:0)
else if(word.indexOf(" cat")==(word.length()-5);
应该工作。
答案 1 :(得分:0)
您的解决方案存在缺陷。它不处理标点符号," cat"
不一定匹配句子的结尾。 例如 please catch the cat
- catch
将被匹配并被忽略,但cat
将会通过。
您需要的是一个循环,搜索 {/ 1>}的所有出现次数。使用从给定索引中搜索的"cat"
版本:
indexOf
这里的想法是,无论何时找到匹配项,都要检查它前面的字符和后面的字符,看它们是否是一个字母(使用public int indexOf(String str, int fromIndex)
)。那是你做边界检查的时候。然后,您开始在索引Character.isLetter
处查找word
,并继续循环,直到您检查完整个字符串。
您可以将其包装在另一个循环中,这样您就不必对所有亵渎性词语进行硬编码。只需将它们全部放入一个数组中,然后遍历数组。