Сортировка строки

1

Я начинаю Java, и мне нужно сделать программу, которая вводит строку с использованием командной строки, а затем печатает количество введенных слов, введенные слова и отсортированные слова. Я могу делать все, кроме сортировки. Я знаю, что мне нужно использовать compareTo, но я не знаю, как заставить этот метод работать. Хотелось бы получить помощь!

Вот мой код:

class Sort{
    public static void main(String args[]){
         int count=args.length;
         System.out.println("\nYou've enetered "+count+" word and they are:");
         for(int i=0;i<count;i++)
         {System.out.print(args[i]+" ");}
         System.out.println("\nThe sorted words are:");
    }
}
  • 3
    Вы можете использовать Arrays#sort или вам нужно реализовать алгоритм сортировки самостоятельно?
  • 0
    Несколько стандартных java-механизмов могут сделать это для вас довольно легко, самый простой из которых luiggi только что намекнул
Показать ещё 7 комментариев
Теги:

2 ответа

1
Лучший ответ

Поскольку вы должны использовать compareTo, вы можете реализовать Collections.sort.

После того, как все значения добавлены в ваш массив, просто укажите этот массив в Collections.sort() вместе с пользовательским Comparator. Но проблема в том, что Collections.sort() не принимает массив String, поэтому вам также нужно преобразовать его в список с помощью метода Arrays.asList(yourArray).

Предположим, что это ваш массив,

String [] args = new String[]{"dddd","cccc","bbbb", "aaaa"};

Теперь позвольте использовать Collections.sort после преобразования вашего массива в список и предоставить ему Comparator.

Collections.sort(Arrays.asList(args),new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
});

просто, не так ли?

Если вы хотите распечатать отсортированные значения сейчас,

for (String p : args ){
    System.out.println(p);
}

Выходы

aaaa
bbbbb
cccc
dddd

Просто для вашей информации, если вы хотите отсортировать в обратном порядке, замените return o1.compareTo(o2) с return o2.compareTo(o1)

0

Вы можете использовать Arrays.sort для сортировки и Arrays.toString для преобразования в String данного массива:

class Sort{
    public static void main(String args[]){
        System.out.printf("\nYou've enetered %d words and they are:", args.length);
        System.out.println(Arrays.toString(args));

        Arrays.sort(args);
        System.out.println("\nThe sorted words are:");
        System.out.println(Arrays.toString(args));
    }
 }
  • 2
    ОП четко заявил, что ему нужно использовать compareTo() , и выполнение того, что, скорее всего, является его домашней работой, не принесет ему никакой пользы.
  • 0
    @Drew sort использует comapreTo(...) . Конечно, вы можете быть правы, но пусть ОП упоминает это сам.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню