1700442784
1700442785
//使用split方法分隔后统计
1700442786
1700442787
int wordsCount=str.split(””).length;
1700442788
1700442789
System.out.println(str+“单词数:”+wordsCount);
1700442790
1700442791
}
1700442792
1700442793
}
1700442794
1700442795
使用split方法根据空格来分割单词,然后计算分隔后的数组长度,这种方法可靠吗?可行吗?我们来看输出:
1700442796
1700442797
Today is Monday
1700442798
1700442799
Today is Monday单词数:3
1700442800
1700442801
Today is Monday
1700442802
1700442803
Today is Monday单词数:4
1700442804
1700442805
Today is Monday?No!
1700442806
1700442807
Today is Monday?No!单词数:3
1700442808
1700442809
I’m Ok.
1700442810
1700442811
I’m Ok.单词数:2
1700442812
1700442813
注意看输出,除了第一个输入“Todady is Monay”正确外,其他都是错误的!第二条输入中单词“Monday”前有2个连续的空格,第三条输入中“NO”单词的前后都没有空格,最后一个输入则没有把连写符号“’”考虑进去,这样统计出来的单词数量肯定错误一堆,那怎么做才合理呢?
1700442814
1700442815
如果考虑使用一个循环来处理这样的“异常”情况,会使程序的稳定性变差,而且要考虑太多太多的因素,这让程序的复杂性也大大提高了。那如何处理呢?可以考虑使用正则表达式,代码如下:
1700442816
1700442817
public static void main(String[]args){
1700442818
1700442819
//接收键盘输入
1700442820
1700442821
Scanner input=new Scanner(System.in);
1700442822
1700442823
while(input.hasNext()){
1700442824
1700442825
String str=input.nextLine();
1700442826
1700442827
//正则表达式对象
1700442828
1700442829
Pattern pattern=Pattern.compile(”\b\w+\b”);
1700442830
1700442831
//生成匹配器
1700442832
1700442833
Matcher matcher=pattern.matcher(str);
[
上一页 ]
[ :1.700442784e+09 ]
[
下一页 ]