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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CustomComparator, сортировка слов в тексте 
V
    Опции темы
Firex
Дата 29.11.2011, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Задача следующая, необходимо отсортировать слова в тексте по убыванию количества вхождений заданного символа, а в случае равенства - по алфавиту.
Как можно дописать компаратор, что бы те слова, где нет заданного символа вовсе либо количество вхождений одинаково, сортировались по алфавиту?
Вот что имею на данный момент:
Код

public class WordComparator implements Comparator<String> {
    public int compare(String str1,String str2){ // str1 и str2 - это слова, уже отпарсенные, без пробелов и прочей всячины, только буквы.
        char ch='р'; // это для теста, сюда будет вызываться какой-нибудь метод получания символа
        return compareByLetter(str1,str2,ch);
    }
    public int compareByLetter(String str1,String str2, char ch){
        int i;
        
        int count1=0; // количество вхождений в первое слово
        int count2=0; // количество вхождений во второе слово

        for (i=0;i<str1.length();i++){
            if (str1.toCharArray()[i]==ch){
                count1++;
            }
        }

        for (i=0;i<str2.length();i++){
            if (str2.toCharArray()[i]==ch){
                count2++;
            }
        }

        if (count1!=count2){
            return count2-count1;
        } else { // тут должно быть что-то ещё, что бы сортировка была такая как в задании
            return 0;
        }
        
    }
}


Это сообщение отредактировал(а) Firex - 29.11.2011, 18:03
PM MAIL   Вверх
APXEOLOG
Дата 29.11.2011, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

if (count1!=count2){
            return count2-count1;
        } else { // тут должно быть что-то ещё, что бы сортировка была такая как в задании
            return str1.compareTo(str2);
        }


Если я правильно понял то в случае равенства кол-ва букв идет обыкновенная строковая сортировка
--------------------
Ученые долго не знали как назвать частоту.Потом так и назвали Hz.
PM MAIL ICQ   Вверх
Firex
Дата 29.11.2011, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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


 




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


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

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