#java
#Ява
Вопрос:
Это то, что я в настоящее время пытаюсь получить на выходе, как это:
input: this is a sentence output: a is this sentence
import java.util.Scanner; Scanner input = new Scanner(System.in); System.out.print("Enter a sentance:"); String text = input.nextLine(); String[] words = text.split(""); String temp; for (int i = 0; i lt; words.length; i ) { for (int j = 0; j lt; (words.length - 1); j ) { if (words[j].compareTo(words[j 1]) lt; 0) { temp = words[j]; words[j] = words[j 1]; words[j 1] = temp; } } System.out.print(words[i]); } } }
Если бы кто-нибудь мог помочь, это было бы здорово!
Комментарии:
1. Разделите строку на » «(пробел), чтобы разделить все слова, и отсортируйте ее с помощью массивов.сортировка(слова, (a, b)-gt;Целое число.сравните(a.длина(), b.длина ()));. Смотрите этот ответ для получения более подробной информации: !(здесь)[https ://stackoverflow.com/questions/35866240/how-to-sort-string-array-by-length-using-arrays-sort]
Ответ №1:
Вы можете преобразовать входные данные в список, а затем отсортировать их с помощью лямбда:
Scanner input = new Scanner(System.in); System.out.print("Enter a sentence:"); String text = input.nextLine(); Listlt;Stringgt; words = Arrays.asList(text.split(" ")); words.sort(Comparator.comparingInt(String::length)); System.out.println(String.join(" ", words));
Это печатает (для ввода this is a sentence
):
a is this sentence
Комментарии:
1. И добавьте вызов
Stream#distinct
, чтобы исключить дубликаты слов.
Ответ №2:
@Test public void testSort() { Assertions.assertEquals("a is this sentence", sort("this is a sentence")); } private String sort(String sentence) { return Arrays.stream(sentence.split(" ")) .sorted(Comparator.comparingInt(String::length)) .collect(Collectors.joining(" ")); }
// разделите слова пробелом, затем отсортируйте по длине и снова соедините слова пробелом.