统计一个文本文件中单词的个数(超简单思路)

这是一道作业习题,可能难度不大吧。在我刚开始写这道题目的时候,上网搜了下,看了大家的思路。大致有以下几种:

1.先将文本文件中的内容追加到BufferString类型的变量中,然后将BufferString转换为String类型,因为String类有一个方法,可以将一个串中某个字符,全部用指定字符(比如空格)来代替(String.replace(“a”,“b”);),然后遇到空格就计数。转换后计算是很简单的,但是转换非空格的情况好像还挺多的。

2.是从一个String串中或者char[ ]数组中进行单词的计数,和这道题目就是差一个从文件中读取,我们先假设我们已经从文件中读取成功了,只需要一个字符一个字符的判断,这样题目就一样了。
其中有一个思路,是先设置一个标志flag=0,用来看是不是遇到空格,如果遇到了空格,标志flag=0;如果遇到的不是空格并且标志flag=0,那么就计数,并且把标志flag=1。如果所判断的内容只有字母加空格,这个绝对完美。

我的思路其实和第二种很相近,唯一不同的区别是,判断一个字符是不是字母,如果是第一次遇到字母就计数,其他情况不计数。我们来看以下代码:

int count = 0;
FileReader f = new FileReader("x.txt");
int x = f.read();
while(x!=-1)//读取文本文件内容,没有结束就进入循环
 {
    
    
	System.out.print((char)x);//输出文本内容可删除
	if(function(x))   //如果是字母
	{
    
    
		count++;     //计数
		x = f.read();
		while(function(x))//如果仍然是字母,只输出,并且读取下一个字符,
	//当不是字母时,跳出循环,进入外部的大循环,会进入else中,读取下一个字符,如果仍然不是字母,依旧会进入到else中,
	//直到遇到字母,进入if中,计数器count加一。
		 {
    
    
		System.out.print((char)x);//输出文本内容可删除
		x = f.read();
		}
	}	
	else
		x = f.read();
}
		f.close();
		System.out.println("\n该文本文件中单词个数是        "+count);
		
public static boolean function(int x)//判断一个字符是不是字母
 {
    
    
if((x>='a'&&x<='z')||x>='A'&&x<='Z')
	return true;
else
	return false;
}

一个简单的运行截图
在这里插入图片描述

写这篇博客有点小愧疚,你写博客就写你的博客吧,还说别人思路的小缺点,先表达一下歉意吧,也希望前辈不要放在心上,不与我这个小白计较。如果我有错误,也希望你们多多指正啊。

猜你喜欢

转载自blog.csdn.net/xiaobai_qian/article/details/105793716