однострочный список - в алфавитном порядке

Я пытаюсь написать код, который использует сканер для ввода списка слов, все в одной строке, а затем расставляет по алфавиту каждое отдельное слово. Я получаю только первое слово в алфавитном порядке по буквам, как я могу это исправить?

код:

else if(answer.equals("new"))
    {
      System.out.println("Enter words, separated by commas and spaces.");
      String input= scanner.next();
      char[] words= input.toCharArray(); 
      Arrays.sort(words);
      String sorted= new String(words);
      System.out.println(sorted);

    }

Результат: " ,аху "


person user2399999    schedule 20.05.2013    source источник


Ответы (2)


Вы читаете строку через scanner.next(), а затем разбиваете эту строку на символы. Итак, как вы сказали, это сортировка одиночной строки по символам через input.toCharArray(). Что вам нужно сделать, так это прочитать все слова и добавить их к String []. После добавления всех слов используйте Arrays.sort(yourStringArray) для их сортировки. См. комментарии для ответов на ваши следующие вопросы.

person Steve P.    schedule 20.05.2013
comment
Итак, как мне настроить String[]? - person user2399999; 20.05.2013
comment
String[] words= (вход1, ввод 2, ввод 3..) или? - person user2399999; 20.05.2013
comment
Да, создайте String [] и добавьте свои строки в эту строку. Затем отсортируйте на основе этого массива. Вы можете добавить, просто сделав что-то вроде String [] ra= new String[10]; 10 было произвольным. Затем вы можете добавить так: ra[0]="steve"; ra[1]="hello";... Если вы следите за своим размером, вы можете добавить в следующий открытый слот в массиве. - person Steve P.; 20.05.2013

Вам нужно будет разбить строку на слова, а не на символы. Одним из вариантов является использование String.split. После этого вы можете снова соединить эти слова в одну строку:

System.out.println("Enter words, separated by commas and spaces.");
String input = scanner.nextLine();

String[] words = input.split(",| ");
Arrays.sort(words);

StringBuilder sb = new StringBuilder();
sb.append(words[0]);
for (int i = 1; i < words.length; i++) {
    sb.append(" ");
    sb.append(words[i]);
}
String sorted = sb.toString();

System.out.println(sorted);

Обратите внимание, что по умолчанию заглавные буквы сортируются перед строчными. Если это проблема, см. этот вопрос.

person Cairnarvon    schedule 20.05.2013
comment
что-то в этом не правильное вычисление, оно компилируется, но в конце ничего не распечатывается - person user2399999; 20.05.2013
comment
У меня работает нормально. Может быть, есть проблема с вашим окружающим кодом? Вот приведен отдельный пример, который вы можете попробовать, чтобы продемонстрировать, что он работает. - person Cairnarvon; 20.05.2013