【笔试】7、统计出其中英文字母、空格、数字和其它字符的个数

/**
 * 题目:题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
 * 时间:2015年7月28日10:04:33
 * 文件:lianxi07.java
 * 作者:cutter_point
 */
package bishi.zuixin50.t2015728;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class Lianxi07
{
	public static void main(String[] args)
	{
		//统计所有的英文字母,也就是ascii码
		String path = "source/zuixin50/lianxi07input.txt";
		String path2 = "source/zuixin50/lianxi07output.txt";
		List lis = Lianxi07.getLines(path);	//获取文本中所有的字符
		Map map = Lianxi07.count(lis);
		//吧统计的数据输出到文件中
		Lianxi07.out(map, path2);
	}

	public static void out(Map map, String path)
	{
		//我们遍历map,吧数据输出到文件中
		FileOutputStream fos = null;
		try
		{
			fos = new FileOutputStream(new File(path));
			//遍历map
			for(Object o : map.entrySet())
			{
				Map.Entry<String, Integer> entry = (Entry<String, Integer>) o;
				//其实这里可以直接输出:out = entry.getKey() + "的个数是:" + entry.getValue() + "\n";
				//这样写就不用进行判断了
				if(entry.getKey() == "zimu")
				{
					String out = "字母的个数是:" + entry.getValue() + "\n";
					System.out.println(out);
					fos.write(out.getBytes());
				}
				else if(entry.getKey() == "kongge")
				{
					String out = "空格的个数是:" + entry.getValue() + "\n";
					System.out.println(out);
					fos.write(out.getBytes());
				}
				else if(entry.getKey() == "shuzi")
				{
					String out = "数字的个数是:" + entry.getValue() + "\n";
					System.out.println(out);
					fos.write(out.getBytes());
				}
				else
				{
					String out = "其他的个数是:" + entry.getValue() + "\n";
					System.out.println(out);
					fos.write(out.getBytes());
				}
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				fos.close();
			}
			catch (Exception e2)
			{
				e2.printStackTrace();
			}
		}
	}

	/**
	 * 我们统计这一行数据中的所有的字母,空格、数字和其他字符
	 * @param lines 一行字符串
	 * @return
	 */
	public static Map count(List lines)
	{
		//这里我们用一个map来存放相应的数据,key是我们要统计的属性:字母,空格。。。value是值个数
		Map tongji = new HashMap<String, Integer>();
		//初始化map
		tongji.put("zimu", 0);
		tongji.put("kongge", 0);
		tongji.put("shuzi", 0);
		tongji.put("other", 0);	//其他
		//首先我们遍历所有的行
		Iterator it = lines.iterator();
		while(it.hasNext())
		{
			//一行一行的取值
			char[] all = ((String) it.next()).toCharArray();
			//我们遍历这个字符数组
			for(int i = 0; i < all.length; ++i)
			{
				if((all[i] >= 'a' && all[i] <= 'z') || (all[i] >= 'A' && all[i] <= 'Z'))
				{
					int value = (int) tongji.get("zimu");
					//我们把数据+1
					tongji.put("zimu", ++value);
				}
				else if((all[i] >= '0' && all[i] <= '9'))
				{
					//我们统计数字的个数
					int value = (int) tongji.get("shuzi");
					//我们把数据+1
					tongji.put("shuzi", ++value);
				}
				else if(all[i] == ' ')
				{
					//如果是空格的话
					int value = (int) tongji.get("kongge");
					//我们把数据+1
					tongji.put("kongge", ++value);
				}
				else
				{
					//其他
					int value = (int) tongji.get("other");
					//我们把数据+1
					tongji.put("other", ++value);
				}
			}//for
		}//while
		//统计完毕
		return tongji;
	}

	public static String getLine(String path)
	{
		//从文件中获取一行数据
		String line = null;
		//一个文件输入流
		InputStreamReader isr = null;
		//用来读取一行
		BufferedReader br = null;
		try
		{
			isr = new InputStreamReader(new FileInputStream(new File(path)));
			br = new BufferedReader(isr);
			line = br.readLine();
		}
		catch (Exception e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally
		{
			//关闭IO资源
			try
			{
				br.close();
				isr.close();
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
		return line;
	}

	//读取文件的内容保存到String的数组中
	public static List getLines(String path)
	{
		//从文件中获取一行数据
		String line = null;
		List<String> lines = new ArrayList();
		//一个文件输入流
		InputStreamReader isr = null;
		//用来读取一行
		BufferedReader br = null;
		try
		{
			isr = new InputStreamReader(new FileInputStream(new File(path)));
			br = new BufferedReader(isr);
			while( (line = br.readLine()) != null)
			{
				//吧读取到的一行数据存放到数组中
				lines.add(line);
			}
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				//关闭IO资源
				br.close();
				isr.close();
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
		return lines;
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-19 08:25:49

【笔试】7、统计出其中英文字母、空格、数字和其它字符的个数的相关文章

OJ刷题之《统计出其中英文字母、数字、空格和其他字符的个数》

题目描述 输入一行字符,分别统计出其中英文字母.数字.空格和其他字符的个数. 输入 一行字符 输出 统计值 样例输入 aklsjflj123 sadf918u324 asdf91u32oasdf/.';123 样例输出 23 16 2 4 代码如下: #include <iostream> #include <cstdio> using namespace std; int main() { char str[50]; int i=0,n1=0,n2=0,n3=0,n4=0; ge

烟大ACM新秀赛 B统计出其中英文字母、数字、空格和其他字符的个数

Description 输入一行字符,分别统计出其中英文字母.数字.空格和其他字符的个数. Input 一行字符 Output 统计值 Sample Input aklsjflj123 sadf918u324 asdf91u32oasdf/.';123 Sample Output 23 16 2 4 HINT /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称: .cpp *作 者: 冷基栋 *完成日期:2014年3月

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

int c = 0, space = 0, num = 0, other = 0; char s[] = "djwiJFIW  [email protected]#$!%"; //        scanf("%s", s); char *str = s; while (*str != '\0') { if ((*str >= 'A' && *str <= 'Z') || (*str >= 'a' && *str &

汇编语言——统计一个字符串中的大写字母、小写字母、数字和其他字符的个数,并显示

;统计字符串中大写字母.小写字母.数字.其他字符的个数DATAS SEGMENT buf db '12ADdf#gh592HKL*','$' tp1 db 0;大写字母个数 tp2 db 0;小写字母个数 tp3 db 0;数字的个数 tp4 db 0;其他字符的个数 str1 db 'the number of big is:','$' str2 db 'the number of small is:','$' str3 db 'the number of number is:','$' st

从终端获取一个字符串,分别统计其中大写字母、小写字母、数字及其它字符的个数。

//从终端获取一个字符串,分别统计其中大写字母.小写字母.数字及其它字符的个数. #include<stdio.h> #include<stdio.h> int main(int argc,const char *argv[]) { char str[100]; char ch; int len,i; int letter = 0, number = 0, space = 0, other = 0; gets(str); for(i=0;i<strlen(str);i++)

程序一 用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。

用记事本建立文件src.dat,其中存放若干字符.编写程序,从文件src.dat中读取数据,统计其中的大写字母.小写字母.数字.其它字符的个数,并将这些数据写入到文件test.dat中. #include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ FILE*fp1,*fp2; char ch; int da=0,xiao=0,shuzi=0,qita=0; if((fp1=fopen("sr

C语言 统计一串字符中空格键、Tab键、回车键、字母、数字及其他字符的个数(Ctrl+Z终止输入)

//凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1 #include<stdio.h> 2 3 void main(){ 4 int c, letter=0, num=0, blank=0, tab=0, enter=0, other=0 ,i=0, sum=0; 5 printf("Please input a string:\n"); 6 while((c=getchar())!=EOF){ 7 sum++; 8 if(c=

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

题目描述 输入 一行字符 输出 统计值 样例输入 aklsjflj123 sadf918u324 asdf91u32oasdf/.';123 样例输出 23 16 2 4程序:#include<stdio.h>int main(){    char s;    int d=0,e=0,k=0,o=0;    while((s=getchar())!='\n')     {         if((s>='A'&&s<='Z')|(s>='a'&&

c语言输入一个字符串,统计其字母,数字和其他字符的个数,并以柱状图输出

#include<stdio.h>int main(int arge,char *argv[]){ char ch; int alp=0,num=0,oth=0,len,alp_start,num_start,oth_start,i; while((ch=getchar())!=-1) { if(ch>='0'&&ch<='9') num++; else if((ch>='a'&&ch<='z')||(ch>='A'&&am

利用列表统计字符串大小写字母,数字和其他字符

你好,我叫布小不 储备知识: 1.Python元组,列表的创建,添加与转化等 2.函数的自定义与调用 题目: 请用户输入一个字符串,统计出其中的大写字母,小写字母,数字和其他字符的个数,返回结果以元组的形式输出 例: 输入:E3r4t5y6~. 输出:字符串中大写字母有1个,小写字母有3个,数字有4个,其他字符有2个 (1, 3, 4, 2) 答: def func1(s): upCount, lowCount, digCount, otherCount = 0, 0, 0, 0 aList =