-1

課題で行き詰まっています!助けてください!割り当ては尋ねます

冒涜的な表現を除外するオプションをユーザーに提供したいと考えています。cat、dog、llama という単語が冒涜的であると考えるとします。キーボードから文字列を読み取り、文字列に冒涜的な単語が含まれているかどうかをテストするプログラムを作成します。冒涜的な単語を正確に含む行だけをプログラムで拒否するようにします。たとえば、独断的連結は小さなカテゴリです。この文は冒涜と見なされるべきではありません。==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);
}}
4

2 に答える 2

0

あなたのソリューションには欠陥があります。句読点を処理せず、" cat"必ずしも文末と一致するとは限りません。 please catch the cat--catchは一致して無視されますが、cat通過します。

必要なのは、出現するすべての を検索するループです"cat"indexOf特定のインデックスから検索する のバージョンを使用します。

public int indexOf(String str, int fromIndex)

ここでの考え方は、一致を見つけるたびに、その前の文字と後の文字をチェックして、それらが文字であるかどうかを確認することです ( を使用Character.isLetter)。それが境界チェックを行うときです。次にword、 indexlastIndex + word.length()の検索を開始し、文字列全体を調べるまでループを続けます。

これを別のループ内にラップすると、すべての冒涜的な言葉をハードコーディングする必要がなくなります。それらをすべて配列に入れて、配列をループします。

于 2013-09-27T00:22:45.900 に答える
0
else if(word.indexOf(" cat")==(word.length()-5);

動作するはずです。

于 2013-09-27T00:16:23.860 に答える