java编写程序从键盘录入一段英文文本(句子之间的标点符号只包括“,”或“.”,单词之间、单词与标点之间都以" "分割。 要求:按照每个单词的长度由高到低输出各个单词(重复单词只输出一次),如果单词长度相同,则按照单词的首字母顺序(不区分大小写,首字母相同的比较第二个字母,以此类推)升序输出。
时间: 2023-05-29 22:07:41 浏览: 496
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一段英文文本:");
String str = sc.nextLine();
String[] words = str.split("[ ,.]"); //以空格、逗号、句号为分隔符,分割字符串
TreeSet<String> set = new TreeSet<>((s1, s2) -> { //使用TreeSet集合,自定义比较器
if (s1.length() != s2.length()) { //单词长度不同,按照长度从大到小排序
return s2.length() - s1.length();
} else { //单词长度相同,按照字典序排序
return s1.compareToIgnoreCase(s2);
}
});
Collections.addAll(set, words); //将单词添加到set集合中
for (String word : set) { //遍历set集合,输出单词
System.out.print(word + " ");
}
}
}
阅读全文