打字猴:1.70044281e+09
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);
1700442834
1700442835 //记录单词数量
1700442836
1700442837 int wordsCount=0;
1700442838
1700442839 //遍历查找匹配,统计单词数量
1700442840
1700442841 while(matcher.find()){
1700442842
1700442843 wordsCount++;
1700442844
1700442845 }
1700442846
1700442847 System.out.println(str+“单词数:”+wordsCount);
1700442848
1700442849 }
1700442850
1700442851 }
1700442852
1700442853 准不准确,我们来看相同的输入所产生的结果:
1700442854
1700442855 Today is Monday
1700442856
1700442857 Today is Monday单词数:3
1700442858
1700442859 Today is Monday
[ 上一页 ]  [ :1.70044281e+09 ]  [ 下一页 ]