Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Срочно нужна помощь с задачей на java 
:(
    Опции темы
karina8998
Дата 8.6.2013, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2013

Репутация: нет
Всего: нет



Ребята, очень прошу. помогите! необходимо в одном из сoncrethandler-ов создать множество нецензурных слов и  реализовать метод doWorkWithNews(News news), чтобы он выдёргивал из текста новости слова,  проверял их на принадлежность к множеству нецензурных слов, и заменял их в новости на звёздочки: *** .
вот весь код
Код

package handler;

/**
 */
abstract class ConcreteHandler1 extends Handler 
{
    
        public abstract void doWorkWithNews(News news);
        {
            //обработка объекта новости
             //всё что мы хотим с ней сделать в этом хендлере
           
        
        }
        public void handleRequest(int i)
    {   
        
        if (i == 1)
        {
            System.out.println("Результат выполнение Handler1");
        } 
        else
        {
            System.out.print("Был задействован обработчик Handler1 ");
            getSuccessor().handleRequest(i);
        }
        
        
    }


Код

package handler;

/**

 */
abstract class ConcreteHandler2 extends Handler 
{
   
        public abstract void doWorkWithNews(News news);
        {
        //реализация метода
        }
        public void handleRequest(int i)
    {
        
        if (i == 2)
        {
            System.out.println("Результат выполнение Handler2");
        } else
        {
            System.out.print("Был задействован обработчик Handler2 ");
            getSuccessor().handleRequest(i);
        }
    }

    
    
}


Код

package handler;



/**

 */
abstract class ConcreteHandler3 extends Handler //список исключаемых авторов
{
   
   
    @Override
    public abstract void doWorkWithNews(News authors);
        {
         //обработка объекта новости
       //всё что мы хотим с ней сделать в этом хендлере
        }
    public void handleRequest(int i)
    {
        
        if (i == 3)
        {
            System.out.println("Результат выполнение Handler3");
        } else
        {
            System.out.print("Был задействован обработчик Handler3 ");
            getSuccessor().handleRequest(i);
        }
        
        
    }


Код

package handler;

/**

 */
public abstract class ConcreteHandler4 extends Handler 
{
   

    protected void doWorkWithNews(News news);
    {

        //обработка объекта новости
       //всё что мы хотим с ней сделать в этом хендлере
       
       
    }

    public void handleRequest(int i)
    {
        if (i == 4)
        {
            System.out.println("Результат выполнение Handler4");
        } else
        {
            System.out.print("Был задействован обработчик Handler4 ");
            getSuccessor().handleRequest(i);
        }
    }
    
}


Код

package handler;
import java.util.Date;

/**

 */
abstract class Handler {
//ПОЛЯ ДОЛЖНЫ БЫТЬ ПРИВАТНЫМИ
private Handler successor;

//Принимаем ссылку на следующий объект (Приемник)
public void setSuccessor(Handler successor)
{
this.successor = successor;
}

public Handler getSuccessor()
{
return successor;
}

public void handleRequest(News news)
{
//обрабатываем новость
doWorkWithNews(news);
//и передаём её следующему хендлеру
successor.handleRequest(news);
}

protected abstract void doWorkWithNews(News news);

}


Код

package handler;

import javax.swing.*;



/**

 */
public class Main
{
 
    public static void main(String arg[]) 
    {
        ConsoleUI ui = new ConsoleUI();
        ui.run();
        
     String News = JOptionPane.showInputDialog("Добро пожаловать в программу нашей редакции!Введите новость, которую вы хотите сообщить");
     String newString = News.intern();
        Handler handler1 = new ConcreteHandler1();
        Handler handler2 = new ConcreteHandler2();
        Handler handler3 = new ConcreteHandler3();
        
 
 
        handler1.setSuccessor(handler2);
        handler2.setSuccessor(handler3);
       
 
        handler1.handleRequest(1);
        handler1.handleRequest(2);
        handler1.handleRequest(3);
         
        System.out.println("Спасибо за свежую информацию! Ваша новость проверена и опубликована:" 
                                                         + newString);
        System.out.println(new java.util.Date());
        System.out.println("Приложение выполнило работу!");
        
        System.exit(0);
    }
}


Очень нуждаюсь в помощи!
PM MAIL   Вверх
Pawl
Дата 8.6.2013, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



а подробнее о классе News? Как в нем текст новости хранится и каким методом его оттуда получить можно?


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
dorogoyIV
Дата 8.6.2013, 17:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(Pawl @  8.6.2013,  15:50 Найти цитируемый пост)
а подробнее о классе News?

да это фигня...
можно ,например, так сделать:
Код

class News
{
    private String news;

    News()
    {
        news = JOptionPane.showInputDialog("Добро пожаловать в программу нашей редакции! Введите новость, которую вы хотите сообщить");
    }

    public String getNews()
    {
        return news;
    }
}

и потом вызывать:
Код

        News news = new News();
        System.out.println(news.getNews());



karina8998, лучше дай изначальный текст задания, а то твой код вообще никуда не годится  smile 

PM MAIL   Вверх
Pawl
Дата 8.6.2013, 19:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



Цитата(dorogoyIV @  8.6.2013,  17:52 Найти цитируемый пост)
можно ,например, так сделать:

если так сделать, то можно, к примеру, создать в классе Handler какой-нибуть protected final ArrayList<String> (или даже стоковый массив) badWords, содержащий набор нецензурных слов, а в doWorkWithNews в цикле проверять, есть ли в новости такие слова:
Код

        String stars = "", newNews = news.getNews();
        for (String badWord : badWords) {
         if (newNews.contains(badWord)) {
             for (int j = 0;  j < badWord.length(); j++) {
                 stars += "*";
             }
             newNews = newNews.replaceAll(badWord, stars);
             stars = "";
         }
        }
        news.setNews(newNews);

а если заменять именно 3-мя звездочками, то еще проще:
Код

        String stars = "***", newNews = news.getNews();
        for (String badWord : badWords) {
         if (newNews.contains(badWord)) {
             newNews = newNews.replaceAll(badWord, stars);
         }
        }
        news.setNews(newNews);


Это сообщение отредактировал(а) Pawl - 8.6.2013, 21:19


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
karina8998
Дата 8.6.2013, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2013

Репутация: нет
Всего: нет



Цитата(dorogoyIV @ 8.6.2013,  17:52)
karina8998, лучше дай изначальный текст задания, а то твой код вообще никуда не годится  smile

Рябята  СПАСИБО ОГРОМНО ЧТО ОТКЛИКНУЛИСЬ!!!!!
dorogoyIV, Вот ИЗНАЧАЛЬНЫЙ ТЕКСТ ЗАДАНИЯ: дан паттерн цепочка обязанностей, изначально есть Хэндлер который связан С КонкретХэндлерами, их 4. Пользователь вводит новость, автора и та проходя по этой цепочке обязанностей печатается. Необходимо сделать так, чтобы нецензурные слова, ежели такие есть заменялись на ***, а также если новость от нежелаемого автора то её просто не печатать. Список нежелаемых авторов тоже создать изначально и проверять потом..
Помогите с кодом пожалуйста!!!
PM MAIL   Вверх
Pawl
Дата 8.6.2013, 22:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



Цитата(karina8998 @  8.6.2013,  22:06 Найти цитируемый пост)
Помогите с кодом пожалуйста!!!

а что, тот код, что я привел - это не помощь? Если не работает, укажите где, постараюсь исправить.


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
karina8998
Дата 9.6.2013, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2013

Репутация: нет
Всего: нет



Цитата(Pawl @ 8.6.2013,  22:58)
а что, тот код, что я привел - это не помощь? Если не работает, укажите где, постараюсь исправить.

Ой, я не так выразилась, спасибо огромное, помощь и ещё какая!!
Просто ведь написали, что мой код никуда не годится - если можно исправить ошибки в нём, тот что я прислала изначально, то посмотрите пожалуйста, с учётом условия изначального..
И ещё, как создать набор нецензурных слов? как это выглядеть будет на коде?
Просто у меня прямо таки плохо с явой, недавно познакомилась - разобраться не успела до конца - а задачу сдавать необходимо срочно...

Это сообщение отредактировал(а) karina8998 - 9.6.2013, 01:04
PM MAIL   Вверх
dorogoyIV
Дата 9.6.2013, 01:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Код

import javax.swing.*;

public class Main
{
    public static void main(String [] args)
    {
        News news = new News();

        Handler h, h2, h3;
        h = new BadAuthor();
        h2 = h.next(new BadWord());
        h3 = h2.next(new Handler3());

        h.doWorkWithNews(news);
        h2.doWorkWithNews(news);
        h3.doWorkWithNews(news);
    }
}

abstract class Handler
{
    protected Handler next(Handler successor)
    {
        return successor;
    }

    protected abstract void doWorkWithNews(News news);
}

class BadAuthor extends Handler
{
    protected void doWorkWithNews(News news)
    {
        String [] arr = new Bad(1).arr;
        String author = news.getAuthor();

        for(int i = 0; i < arr.length; i++)
        {
            if(arr [i].equalsIgnoreCase(author))
            {
                System.out.println("bad author");
                System.exit(0);
            }
        }
        System.out.println(getClass().getName() + "\n\n");
    }
}

class BadWord extends Handler
{
    public void doWorkWithNews(News news)
    {
        String [] arr = new Bad(2).arr;
        String s = news.getNews();
        String newNews = s;

        for(int i = 0; i < arr.length; i++)
        {
            newNews = newNews.replace(arr [i], "***");
        }
        System.out.println(getClass().getName() + "\n" + newNews + "\n\n");
    }
}

class Handler3 extends Handler
{
    public void doWorkWithNews(News news)
    {
        System.out.println(getClass().getName() + "\n\n");
    }
}

class News
{
    private String author;
    private String news;

    News()
    {
        author = JOptionPane.showInputDialog("Добро пожаловать в программу нашей редакции! Введите свое имя", "Pupkin_2");
        news = JOptionPane.showInputDialog("Добро пожаловать в программу нашей редакции! Введите новость, которую вы хотите сообщить", "blya word pohuy, word2, nahuya .. пох");
    }

    public String getAuthor()
    {
        return author;
    }

    public String getNews()
    {
        return news;
    }
}

class Bad
{
    private static int AUTHOR = 1;
    private static int WORDS = 2;
    public static String [] arr;

    Bad(int mask)
    {
        // здесь, скорее всего, слова будут браться из базы данных, я пока сделаю статическими

        if(mask == AUTHOR)
            arr = new String [] {"Pupkin", "Ivanov"};

        if(mask == WORDS)
            arr = new String [] {"blya", "nah", "pohuy", "пох"};
    }
}

PM MAIL   Вверх
Pawl
Дата 9.6.2013, 08:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



Цитата(dorogoyIV @  9.6.2013,  01:48 Найти цитируемый пост)

[code=java]
 for(int i = 0; i < arr.length; i++) {
    newNews = newNews.replace(arr [i], "***");
}
[/java]

да, так еще проще! Только почему бы все-таки не использовать цикл вида foreach для краткости?
[code=java]
 for(String badWord : arr) {
    newNews = newNews.replace(badWord, "***");
}
[/java]

Это сообщение отредактировал(а) Pawl - 9.6.2013, 08:38


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
dorogoyIV
Дата 9.6.2013, 10:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



Цитата(Pawl @  9.6.2013,  08:35 Найти цитируемый пост)
Только почему бы все-таки не использовать цикл вида foreach для краткости?

да можно конечно, на ваш вкус  smile 
PM MAIL   Вверх
karina8998
Дата 9.6.2013, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2013

Репутация: нет
Всего: нет



Ребята, спасибо вам огромнейшее!! вы даже не представляете как помогли мне!!!!!!!)))))))))))))))))*****
Но я всё же задам ещё один глупый вопрос (простите уж меня - правда плохо разбираюсь) - Тот код что Вы прислали - это то, что мне необходимо изменить в своём коде? больше ничего там немять не нужно - остальное, что не указано, всё так оставить?
PM MAIL   Вверх
dorogoyIV
Дата 9.6.2013, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



 smile  это новый самостоятельный код
PM MAIL   Вверх
karina8998
Дата 9.6.2013, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2013

Репутация: нет
Всего: нет



ок, а как он связан с паттерном цепочка обязанностей? у меня же были изначально ConcreteHandlеr-ы, задачу реализовать мне надо на примере этого паттерна...
PM MAIL   Вверх
Pawl
Дата 9.6.2013, 13:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



Цитата(karina8998 @  9.6.2013,  12:33 Найти цитируемый пост)
ок, а как он связан с паттерном цепочка обязанностей?

Цитата

Шаблон рекомендован для использования в условиях:
в разрабатываемой системе имеется группа объектов, которые могут обрабатывать сообщения определенного типа;
все сообщения должны быть обработаны хотя бы одним объектом системы;
сообщения в системе обрабатываются по схеме «обработай сам либо перешли другому», то есть одни сообщения обрабатываются на том уровне, где они получены, а другие пересылаются объектам иного уровня.

Так и связан. h обрабатывает сообщение на предмет неправильного автора, h2 удаляет плохие слова, а h3 тут просто "до кучи". Цепочка обязанностей получается с помощью метода next. Вот подробнее про этот паттерн. Кстати, 4-й хэндлер тут - это уже явное излишество!  smile  


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
karina8998
Дата 9.6.2013, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.6.2013

Репутация: нет
Всего: нет



Спасибо огромнейшее, ребят))))))))))) Невероятно помогли!!!))))
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1218 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.