对wordcount单词字母部分的修改

原始代码:

	int s;
	s = ch;
	switch (s)
	{
	case ‘a‘:letter[0]++; break;
	case ‘b‘:letter[1]++; break;
	case ‘c‘:letter[2]++; break;
	case ‘d‘:letter[3]++; break;
	case ‘e‘:letter[4]++; break;
	case ‘f‘:letter[5]++; break;
	case ‘g‘:letter[6]++; break;
	case ‘h‘:letter[7]++; break;
	case ‘i‘:letter[8]++; break;
	case ‘j‘:letter[9]++; break;
	case ‘k‘:letter[10]++; break;
	case ‘l‘:letter[11]++; break;
	case ‘m‘:letter[12]++; break;
	case ‘n‘:letter[13]++; break;
	case ‘o‘:letter[14]++; break;
	case ‘p‘:letter[15]++; break;
	case ‘q‘:letter[16]++; break;
	case ‘r‘:letter[17]++; break;
	case ‘s‘:letter[18]++; break;
	case ‘t‘:letter[19]++; break;
	case ‘u‘:letter[20]++; break;
	case ‘v‘:letter[21]++; break;
	case ‘w‘:letter[22]++; break;
	case ‘x‘:letter[23]++; break;
	case ‘y‘:letter[24]++; break;
	case ‘z‘:letter[25]++; break;
	case ‘A‘:letter[0]++; break;
	case ‘B‘:letter[1]++; break;
	case ‘C‘:letter[2]++; break;
	case ‘D‘:letter[3]++; break;
	case ‘E‘:letter[4]++; break;
	case ‘F‘:letter[5]++; break;
	case ‘G‘:letter[6]++; break;
	case ‘H‘:letter[7]++; break;
	case ‘I‘:letter[8]++; break;
	case ‘J‘:letter[9]++; break;
	case ‘K‘:letter[10]++; break;
	case ‘L‘:letter[11]++; break;
	case ‘M‘:letter[12]++; break;
	case ‘N‘:letter[13]++; break;
	case ‘O‘:letter[14]++; break;
	case ‘P‘:letter[15]++; break;
	case ‘Q‘:letter[16]++; break;
	case ‘R‘:letter[17]++; break;
	case ‘S‘:letter[18]++; break;
	case ‘T‘:letter[19]++; break;
	case ‘U‘:letter[20]++; break;
	case ‘V‘:letter[21]++; break;
	case ‘W‘:letter[22]++; break;
	case ‘X‘:letter[23]++; break;
	case ‘Y‘:letter[24]++; break;
	case ‘Z‘:letter[25]++; break;
	}

开始写时,也觉得这样的表述不够简洁。但由于当时写了好长时间的代码,思路也不是很清晰,就用这种相对来说比较笨的方法。事后也忘记来修改更新这一部分。

以下是更改后的代码:

int j;
	char i;
	for (i = ‘a‘, j = 0; i <= ‘z‘; i++, j++)
	{
		if (ch == i)
		{
			letter[j]++;
			break;
		}
	}
	for (i = ‘A‘, j = 0; i <= ‘z‘; i++, j++)
	{
		if (ch == i)
		{
			letter[j]++;
			break;
		}
	}

使用的是ASCILL码来控制。char型变量i从a开始一直加到z,用来比较字符是否相等。int型变量j从0开始,用来控制对应的数组下标。

文件输入的路径可能会很长,而我之间数组大小设为20,这是远远不够的,我也对此做出了修改

char filename[50];

长度改为50。

新增加模块:字符的分类统计,把字母和符号分开来统计计数。新增函数void Sort(char ch);代码如下:

void Sort(char ch)
{
	if ((ch >= ‘a‘ && ch <= ‘z‘) || (ch >= ‘A‘ && ch <= ‘Z‘))
	{
		chnum++;
		return;
	}
	else
		signum++;
}

chnum用来记录字母的数量,signum用来记录符号的数量。初值都为0。

以上就是我对wordcount的修改,其中还是存在很多的不足,希望大家多提宝贵意见。特别要感谢邹欣老师阅读我的博客,并且提出宝贵的意见。让我能使我的程序更加优化。

时间: 2024-10-30 09:11:04

对wordcount单词字母部分的修改的相关文章

Python 单词字母顺序不变且全部倒排

翻出google测试工程师的一道题目: 设计一个函数,任何语言都可以,实现以下功能: 一个句子,将句子中的单词全部倒排过来,但单词的字母顺序不变.eg.  this is a real world输出结果为:world real a is this 笔者用Python实现如下: #! /usr/bin/env python # -* -coding:utf-8-*- def str_reverse(str): str_dst =str.split()[A1] str_dst.reverse()[

windows下用idea编写wordcount单词计数项目并打jar包上传到hadoop执行

windows下用idea编写wordcount单词计数项目并打jar包上传到hadoop执行 参考 https://blog.csdn.net/weixin_42370346/article/details/88688693 1.最后一步运行jar包时报错 原因:未指出主类名 解决方法:hadoop jar /home/wxx/WordCount.jar com.hadoop.project.WordcountMain /user/hadoop/input/file.txt /user/had

第六篇:Eclipse上运行第一个Hadoop实例 - WordCount(单词统计程序)

需求 计算出文件中每个单词的频数.要求输出结果按照单词的字母顺序进行排序.每个单词和其频数占一行,单词和频数之间有间隔. 比如,输入两个文件,其一内容如下: hello world hello hadoop hello mapreduce 另一内容如下: bye world bye hadoop bye mapreduce 对应上面给出的输入样例,其输出样例为: bye   3 hadoop 2 hello 3 mapreduce 2 world 2 方案制定 对该案例,可设计出如下的MapRe

Eclipse上运行第一个Hadoop实例 - WordCount(单词统计程序)

需求 计算出文件中每个单词的频数.要求输出结果按照单词的字母顺序进行排序.每个单词和其频数占一行,单词和频数之间有间隔. 比如,输入一个文件,其内容如下: hello world hello hadoop hello mapreduce 对应上面给出的输入样例,其输出样例为: hadoop 1 hello 3 mapreduce 1 world 1 方案制定 对该案例,可设计出如下的MapReduce方案: 1. Map阶段各节点完成由输入数据到单词切分的工作 2. shuffle阶段完成相同单

Hadoop WordCount单词计数原理

计算文件中出现每个单词的频数 输入结果按照字母顺序进行排序 编写WordCount.java 包含Mapper类和Reducer类 编译WordCount.java javac -classpath 打包jar -cvf WordCount.jar classes/* 提交作业 hadoop jar WordCount.jar WordCount input output

Hadoop实例之利用MapReduce实现Wordcount单词统计 (附源代码)

大致思路是将hdfs上的文本作为输入,MapReduce通过InputFormat会将文本进行切片处理,并将每行的首字母相对于文本文件的首地址的偏移量作为输入键值对的key,文本内容作为输入键值对的value,经过在map函数处理,输出中间结果<word,1>的形式,并在reduce函数中完成对每个单词的词频统计.整个程序代码主要包括两部分:Mapper部分和Reducer部分. Mapper代码 public static class doMapper extends Mapper<O

运行Hadoop自带的wordcount单词统计程序

0.前言 前面一篇<Hadoop初体验:快速搭建Hadoop伪分布式环境>搭建了一个Hadoop的环境,现在就使用Hadoop自带的wordcount程序来做单词统计的案例. 1.使用示例程序实现单词统计 (1)wordcount程序 wordcount程序在hadoop的share目录下,如下: [[email protected] mapreduce]# pwd /usr/local/hadoop/share/hadoop/mapreduce [[email protected] mapr

hive学习之WordCount单词统计

看hive目录下就可以了,程序在hdfs里创建一个hive的大文件夹,相当于数据库吧.上面就是一个完整的利用hive来做单词统计,其中的优劣也能看出一点.

java首字母大写的修改方式(利用ascii编码前移的方式)

ascii编码中字母大小写之间相差32个单位,大写在前小写在后 public static String UpperCase(String name){ //将string类型转化成char类型 char []  cs = name.toCharArray(); //通过ASCII表格将首字母减32个位 cs[0]  -= 32; //输出 return String.valueOf(cs);        }