Я начинаю 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:");
}
}
Поскольку вы должны использовать 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)
Вы можете использовать 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));
}
}
compareTo()
, и выполнение того, что, скорее всего, является его домашней работой, не принесет ему никакой пользы.
sort
использует comapreTo(...)
. Конечно, вы можете быть правы, но пусть ОП упоминает это сам.
Arrays#sort
или вам нужно реализовать алгоритм сортировки самостоятельно?