您的位置:首页 > 其它

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

2016-04-10 09:27 471 查看
题目:

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

程序分析:

利用while语句,条件为输入的字符不为 '\n '.

<span style="font-size:18px;">import java.util.Scanner;

public class count {
public static void main(String args[]) {

System.out.println("请输入字符串:");
Scanner scan = new Scanner(System.in);

String str = scan.nextLine(); // 读入能够包含空格的字符串
System.out.println(str);
System.out.println(str.length());

String E1 = "[\u4e00-\u9fa5]"; // 匹配中文字符的正则表达式
String E2 = "[a-zA-Z]"; // 匹配字母的正则表达式

int countH = 0;
int countE = 0;

char[] arrChar = str.toCharArray();
System.out.println(arrChar.length);
String[] arrStr = new String[arrChar.length];

for (int i = 0; i < arrChar.length; i++) { // 字符串转换为字符数组
arrStr[i] = String.valueOf(arrChar[i]);
}
for (String i : arrStr) {
if (" ".equals(i)) {
continue;
}
if (i.matches(E1)) { // 匹配汉字,计数
countH++;
}

if (i.matches(E2)) { // 匹配字母,计数
countE++;
}
}
System.out.println("汉字的个数" + countH);
System.out.println("字母的个数" + countE);
}

}</span><span style="font-size:14px;">
</span>


PS(java):

1、next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab、或Enter键等结束符,next()方法会自动将其去掉。只有在输入有效字符之后,next()方法才将其后的输入的空格键、Tab或Enter键等视为分隔符或结束符。

简单地说,next()查找并返回来自此扫描器的下一个完整标记,next方法不能得到带空格的字符串。

2、nextLine()方法的结束符只是Enter键,即nextLine()方法返回的是Enter键之前的所有字符,可以得到带空格的字符串。

3、next() 在和nextLine ()结合使用时特别注意!

next() 在 nextLine ()之前使用时,next 扫描空格或换行之前的字符,并没有读入"\n" , 而nextLine 则要从"\n" 开始读入,有可能读不到数据或者读入“脏数据”。

4、读者可以结合上面的程序,把代码中的nextLine()换为next(),试一下结果。(上面的程序可以接收包含空格的字符串,如果换为next(),输入含空格的字符串后,将不满足题目的要求)

5、读者如果还有疑问,可以参看API或者查阅其他资料。

PS(正则表达式):

<span style="font-size: 18px;">[\u4e00-\u9fa5] : 字符范围,匹配汉字的(简体、繁体)正则表达式。还可以使用"^[/u4E00-/u9FA5]+$"或者</span>
<span style="font-size:18px;"><span style="white-space:pre">		</span>   "<span style="color: rgb(54, 46, 43); font-family: Arial; font-size: 14px; line-height: 26px;">^[/u4E00-/u9FFF]+$</span>"两种形式,该正则表达式的字面理解就是至少匹配一个汉字。</span>
<span style="font-size: 18px;"></span><pre name="code" class="java"><span style="font-size: 18px;">[a-zA-Z] : 匹配(大小写)字母。</span>



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: