使用了两种方式split和StringTokenizer
Java编程,在主类CountWords的主方法中,使用字符串分析器类StringTokenizer完成对下面英文的单词统计,分隔符包括:逗号、圆点、分号、空格、感叹号(,.; !)。请输出每个拆分后的单词,并在最后输出单词总个数。
要统计的英文内容:
Which do you find more important, money or friends? Friends, of course.
输出:
单词的总数是:12
package test6;
/**
* 刘起儒
* 2021.11.26
*/
import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Test6_2 {
定义Split类 : 方法一
public static int Split(String str1) {
//分隔符包括:逗号、圆点、分号、空格、感叹号(,.; !)
String Re[] = str1.split("[,.; !]");
//将数组转换成列表,解决,和空格之间会认为一个单词的问题
ArrayList<String> strList = new ArrayList<String>();
for (int i = 0; i < Re.length; i++) {
strList.add(Re[i]);
}
//循环删除list列表中所有的空值
while (strList.remove(null));
while (strList.remove(""));
//将去除空值的列表转换为新数组
String newArray[] = strList.toArray(new String[strList.size()]);
//返回方法一split方式统计的单词总数
return newArray.length;
}
//定义StringTokenizer类 : 方法二
public static int StringTokenizer(String str) {
//使用StringTokenizer自带类统计单词总数
StringTokenizer tk=new StringTokenizer(str,"[,.; !]");
int num=0;
while(tk.hasMoreElements()){
tk.nextToken();
num++;
}
//返回方法二StringTokenizer方式统计的单词总数
return num;
}
//主类
public static void main(String[] args) {
while (true) {
Scanner in = new Scanner(System.in);
System.out.println("请输入需要统计的英文内容:");
String str = in.nextLine();
System.out.println("自建Split类统计的单词总数是:" + Split(str));
System.out.println("自带StringTokenizer类统计的单词总数是:" + StringTokenizer(str) + "\n");
}
}
}