java50题----07统计字符数

/*

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

*/
import java.io.*;
import java.lang.Character.*;

class Demo
{
	private Demo(){}

	private static Demo instance = new Demo();

	private int alfabetCount = 0;
	private int spaceCount = 0;
	private int numCount = 0;
	private int otherCount = 0;

	public static Demo getInstance()
	{
		return instance;
	}

	private void parse(String str)
	{

		char[] arr;
		arr = str.toCharArray();

		setZero();

		for(int i=0; i<arr.length; i++)
		{
			if(arr[i] >='0' && arr[i]<= '9')
				numCount++;
			else if((arr[i]>='a' && arr[i]<='z') || (arr[i]>='A' && arr[i]<='Z'))
				alfabetCount++;
			else if(arr[i]=='\t' || arr[i]=='\n' || arr[i]=='\f'||arr[i]=='\r' || arr[i] == ' ')
				spaceCount++;
			else
				otherCount++;


		}


	}

	private void setZero()
	{
		alfabetCount = 0;
		spaceCount = 0;
		numCount = 0;
		otherCount = 0;
	}

	public void getCounts(String str)
	{
		parse(str);

		printFunction("alfabetCount:\t"+alfabetCount);
		printFunction("numCount:\t"+numCount);
		printFunction("spaceCount:\t"+spaceCount);
		printFunction("otherCount:\t"+otherCount);

	}

	private void printFunction(Object obj)
	{
		System.out.println(obj.toString());
	}


}



class MainClass 
{
	public static void main(String[] args)throws Exception 
	{
		Demo d = Demo.getInstance();
		System.out.println("Please Input a string:");
//		//录取键盘输入字节流对象
		InputStream in = System.in;
//		
//		//将字节流对象转换成字符流对象
		InputStreamReader reader = new InputStreamReader(in);
//		
//		//使用缓冲技术读取字符流对象
		BufferedReader buf = new BufferedReader(reader);

		String str = "";

		while(true)
		{
			str = buf.readLine();

			if(str.isEmpty() != true)
			{
				if(str.equals("quit")==true)
				{
					System.exit(0);
				}

				d.getCounts(str);

			}


		}

	}
}

/*
判断字符真是费劲。。。看着就别扭。电子书中的代码好像有问题,ch是数组这么判断编译时提示错误。
   
	ch= s.toCharArray(); 

    for(inti=0; i<ch.length; i++) { 
     if(ch>= '0' &&ch<= '9') { 
     digital ++; 

     }else if((ch>= 'a' &&ch<= 'z') || ch > 'A' &&ch <= 'Z'){ 
     character++; 
     }else if(ch== ' '){ 

     blank++; 
     }else { 
     other++; 

     } 
     } 


*/



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值