统计单词

方法一:Scanner中方法hasNext()

/*
 * 题目内容:
你的程序要读入一篇英文文章,然后统计其中的单词数来输出。需要统计的数据为:

总的单词数量;
含有1个字母到10个字母的单词的数量。

单词和单词的间隔是由各种空格(包括空格、tab和回车换行)形成的,也就是说,这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格。长度超过10个字母的单词需要计入总的单词数量,但是不做分类统计。

因此,对于下面的句子:
"What you see is a very hefty response," said CNN Aviation Correspondent Rene Marsh.
其中的单词共14个。注意这里的response,"后面跟了空格。

输入格式:
一篇英文文章。

输出格式:
11个数字,依次是总的单词数量、1个字母的单词数量、2个字母的单词数量。。。10个字母的单词的数量。每个数字后有一个空格。行末有一个回车换行。

输入样例:
"What you see is a very hefty response," said CNN Aviation Correspondent Rene Marsh.

输出样例:
14 1 1 3 3 2 1 0 1 0 1 

时间限制:500ms内存限制:32000kb*/
import java.util.Scanner;

public class StatisticalWord {//统计单词个数

    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);   
        int count=0;
        int[] counter=new int[11];

        while(input.hasNext()){
            String str=input.next();
            if(str.length()<=10&&str.length()>=0){
                counter[str.length()]++;
            }   
            count++;
        }

        System.out.print(count);
        for(int i=1;i<=10;i++)
            System.out.print(" "+counter[i]);
        System.out.println();
        input.close();

    }

}

本题是零基础学Java语言期末考试的编程题
注意以下几点

  1. it’s”算一个单词,长度为4
  2. 每个数字后有一个空格。行末有一个回车换行。
  3. 这里的response,”后面跟了空格
  4. 最后测试时,应该先将要测试的句子,ctrl+z粘贴到控制台上,然后enter,然后ctrl+z(此处是为了EOF)

方法二:String中方法split()

split 方法:将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
  stringObj.split([separator],[limit])
参数:stringObj 必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。
separator 可选项。字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽
  略该选项,返回包含整个字符串的单一元素数组。 limit可选项。该值用来限制返回数组中的元素个数。
  说明:split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解。separator 不作为任何数组元素的部分返回。
  split 的实现直接调用的 matcher 类的 split 的方法。“ . ”在正则表达式中有特殊的含义,因此我们使用的时候必须进行转义”\.”
  如果用竖线“|”分隔的话,将出现不可得到的结果,必须改为“|”
  ,+ * 不是有效的模式匹配规则表达式,用”//*” “//+”转义后即可得到正确的结果。

import java.util.*;

public class Main {
    public static void main(String a[]) { 
        Scanner input=new Scanner(System.in);
        String Sentence=input.nextLine();
        count(Sentence);
    }


public static void count(String str){
        int count=0;
        String string=str;
        int a[]=new int[11];
        String s[]=string.split(" ");
        for(int i=0;i<s.length;i++)
            if(s[i].length()<=10&&s[i].length()>=0)
                a[s[i].length()]++;         
        System.out.print(s.length);
        for(int i=1;i<=10;i++)
            System.out.print(" "+a[i]);
        System.out.println();   
    }
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值