方法一: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语言期末考试的编程题
注意以下几点
- it’s”算一个单词,长度为4
- 每个数字后有一个空格。行末有一个回车换行。
- 这里的response,”后面跟了空格
- 最后测试时,应该先将要测试的句子,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();
}
}