输入一个英文句子,把句子中的单词(不区分大小写)按出现次数按从多到少把单词和次数在屏幕上输出来,要求能识别英文句号和逗号,即是说单词由空格、句号和逗号隔开。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
public class TestMyGod {
public static void main(String[] args) {
// 使用Scanner类定义对象
String passage = new Scanner(System.in).nextLine().toLowerCase();
List<String> wordList = new ArrayList<String>();
// 存放不同的单词
HashSet<String> hashSet = new HashSet<String>();
String[] spices = passage.split("\\,|\\ |\\.");
wordList.addAll(Arrays.asList(spices));
hashSet.addAll(Arrays.asList(spices));
// 根据迭代器,打印出字母的种类和个数
ArrayList<String> arrayList = new ArrayList<String>(hashSet);
Collections.sort(arrayList);
for (String s : arrayList) {
if(!s.isEmpty()) {
int num = 0;
for (String ss : wordList) {
if (ss.equals(s)) {
num++;
}
}
System.out.println(s.trim() + ":" + num);
}
}
}
}
这道题踩得雷相当多,所以单独记录一篇文章。
1.监听键盘输入的代码,之前没有掌握:
String passage = new Scanner(System.in).nextLine()
2.split的骚操作(多个分隔条件):
//将多个分隔条件用|分开
String[] spices = passage.split("\\,|\\ |\\.");
//将多个分隔条件用中括号[]括起来
String[] spices = passage.split("[\\. ,]");
//备注:String[] spices = passage.split(",| |\\.");
//中,如果不知道是否为特殊字符,可以全部转义一下。
3.HashSet的排序操作。
3.1.转化成list,然后调用Collections的方法进行排序:
ArrayList<String> arrayList = new ArrayList<String>(hashSet);
Collections.sort(arrayList);
3.2.转化成TreeSet进行排序:
TreeSet<String> tree = new TreeSet<String>();
tree.addAll(hashSet);
tree.comparator();
3.3.此处应该有备注,对于String[]格式的数据排序:
String[] spices = passage.split("\\,|\\ |\\.");
//直接使用数组的Arrays.sort的排序操作
Arrays.sort(spices);