Ошибка фильтра ненормативной лексики - PullRequest
0 голосов
/ 13 февраля 2011

Мы хотели бы дать нашим пользователям возможность отфильтровывать ненормативную лексику.Предположим, что мы считаем слова «кот», «собака» и «лама» нечестными.Напишите программу, которая читает строку с клавиатуры и проверяет, содержит ли строка одно из наших профанных слов.Ваша программа должна найти такие слова, как cAt, которые отличаются только регистром.

Попытка:

import java.util.Scanner;

public class Assign5 {
    public static void main(String[] args) {
        String cat,dog,llama,x;
        System.out.println("Enter a word");
        Scanner keyboard = new Scanner (System.in);

        x = keyboard.next();
        x.equalsIgnoreCase(x);

        if(x.indexOf("cat")!=-1&&x.indexOf("dog")!=-1&&x.indexOf("llama")!=-1);
        {
            System.out.println("Profanity Detected");
        }
        else
        {
            System.out.println("No Profanity Detected");     
        } 
    }

По какой-то причине он подчеркивает else, поэтому я не могу его запустить.Что я делаю не так?

Мне запрещено использовать: for, while и массивы.Мы еще не дошли до них.Мне разрешено использовать только: boolean, switch и if-else.Также я использую x.equalsIgnoreCase(x), чтобы отменить идентификацию случая.Будет ли это работать?

Ответы [ 6 ]

1 голос
/ 13 февраля 2011

Проблема заключается в следующем:

if (x.indexOf("cat") != -1 
    && x.indexOf("dog") != -1 
    && x.indexOf("llama") != -1); // <-- look there

{
    System.out.println("Profanity Detected");
}

Вы замечаете что-то в конце "если"?

Подсказка: "{блок}" не является частью if! Это то, что заставляет подчеркивать «остальное». Возможно, есть и дополнительные ошибки, но это синтаксическая ошибка.

Я отформатирую свой код следующим образом, чтобы легко обнаружить эти ошибки. Принять хорошее форматирование кода - очень продуктивная задача:)

if (expr) {
   ...
} else {
   ...
}
1 голос
/ 13 февраля 2011

Пара вещей:

  1. Как отметил EboMike, у вас есть лишняя точка с запятой.
  2. Что вы ожидаете от x.equalsIgnoreCase(x)? Это всегда будет возвращать true (да, x равно самому себе), и, поскольку вы нигде не используете его, ваш вызов его совершенно бесполезен.
  3. Если вы ищете текст, используя indexOf(), но вам нужно, чтобы он не учитывал регистр, вы можете сначала преобразовать строку в верхний или нижний регистр.
  4. А как насчет таких слов, как "Кэтрин"? Ты тоже собираешься их поймать?

P.S. Вы можете найти полезным чтение документации по Java для класса String . Если вы используете Google Chrome, вам также может быть полезно найти расширение Java API Search для поиска соответствующей документации. В противном случае вам обязательно нужно оформить и добавить в закладки документацию по Java 6 API .

1 голос
/ 13 февраля 2011

x.equalsIgnoreCase(x); ничего не делает.

Для преобразования строки в нижний регистр. Вместо этого используйте x = x.toLowerCase();.

1 голос
/ 13 февраля 2011

Потеряйте точку с запятой после выражения if.

0 голосов
/ 18 сентября 2013

это проще, чем вы думаете.используйте метод .equals.

0 голосов
/ 24 июля 2013

Вы возвращаете обнаружение, если обнаружено ВСЕ ненормативную лексику: если обнаружены кошка и лама и собака

Чтобы исправить это, используйте || (или): вернуть обнаружение кота || лама || собака обнаружена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...