Неправильное понимание работы сканера nextLine() возврашает строку, а не слово.
| Код | import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Scanner; import java.util.TreeSet;
public class JavaApplication40 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Введите текст: "); while (scanner.hasNext()) { String stringLine = scanner.nextLine(); String[] words = stringLine.split(" "); TreeSet<String> set = new TreeSet<String>(new Comparator<String>() { @Override public int compare(String o1, String o2) { return o1.length() - o2.length(); } });
List<String> list = new ArrayList<String>(words.length); for (String word: words) { set.add(word); list.add(word); } String max = set.last(); String min = set.first(); int iMax = list.indexOf(max); int iMin = list.indexOf(min); list.set(iMax, min); list.set(iMin, max);
StringBuilder stringBuilder = new StringBuilder(); for (String string : list) { stringBuilder.append(string).append(" "); } System.out.println("Полученная строка: "); System.out.println(stringBuilder.toString().trim()); } } }
|
Добавлено @ 13:18 Еще вот такой вариант без лишнего сета и компортара.
| Код | import java.util.ArrayList; import java.util.List; import java.util.Scanner;
public class JavaApplication40 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Введите строку: "); while (scanner.hasNext()) { String stringLine = scanner.nextLine(); String[] words = stringLine.split(" "); int vMax = Integer.MIN_VALUE; int vMin = Integer.MAX_VALUE; int iMax = Integer.MIN_VALUE; int iMin = Integer.MAX_VALUE; List<String> list = new ArrayList<String>(words.length); for (int i = 0; i < words.length; i++) { String word = words[i]; if (word.length() > vMax) { iMax = i; vMax = Math.max(vMax, word.length()); } if (word.length() < vMin) { iMin = i; vMin = Math.min(vMin, word.length()); } list.add(word); } String min = list.get(iMin); String max = list.get(iMax);
list.set(iMax, min); list.set(iMin, max);
StringBuilder stringBuilder = new StringBuilder(); for (String string : list) { stringBuilder.append(string).append(" "); } System.out.println("Полученная строка: "); System.out.println(stringBuilder.toString().trim()); } } }
|
|