输出一个字符串中单词的个数

博主玩了两天后看书,感觉知识陌生,简单程序都要想很久,意识到学习需要连贯性,决定加紧督促自己,认真学习,尽快学完C++,并立贴自勉。

玩了两天,再回头来看书,顿时感觉陌生了好多!一个简单的程序也要想很久!学习果然是需要一个连贯性的!以后要加紧督促自己,认真学习!速度学完c++!

在此立贴自勉~!

/************************************
/*		学生:刘中华
/*		日期:2014-1-10
/*		功能:读取一个字符串中的单词
/*
***************************************/
#include<iostream>
using namespace std;
void main()
{
	char str[50];
	gets(str);
	int i=0,num=0;
	bool word=false;
	while(str[i]!='\0')
	{
		if(str[i]==' '||str[i]==','||str[i]=='.'||str[i]==';'||str[i]=='?'||str[i]=='!')	word=false;//输入是空格则不构成单词
		else if(word==false)//输入不是空格,且之前不构成单词
		{
			num++;
			word=true;
		}
		i++;
	}
	puts("there are ");
	cout<<num;
	puts(" words in the line.");
	cout<<(char)num;


}


### Java 中统计字符串单词数量的方法 在 Java 中,可以通过多种方法来统计字符串中的单词数量。以下是基于正则表达式的实现方式以及通过 `split` 方法分割字符串的方式。 #### 使用正则表达式统计单词数量 可以利用正则表达式 `[a-zA-Z]+` 来匹配所有的英文单词,并通过 `Pattern` 和 `Matcher` 类来进行处理[^3]: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class WordCounter { public static int countWords(String str) { Pattern pattern = Pattern.compile("[a-zA-Z]+"); // 定义正则表达式匹配单词 Matcher matcher = pattern.matcher(str.toLowerCase()); // 创建匹配器并转换为小写 int wordCount = 0; while (matcher.find()) { // 查找下一个匹配项 wordCount++; // 单词计数增加 } return wordCount; // 返回总单词数 } public static void main(String[] args) { String input = "Hello, my name is John"; System.out.println("Word Count: " + countWords(input)); // 输出单词数量 } } ``` 上述代码会输出: `Word Count: 5` 此方法适用于仅需统计英文字母组成的单词的情况。 --- #### 使用 `split` 方法统计单词数量 另一种常见方法是使用 `String.split()` 函数将字符串按空格或其他分隔符拆分为数组,然后计算数组长度[^4]: ```java public class WordSplitter { public static int countWordsUsingSplit(String str) { if (str == null || str.isEmpty()) { return 0; // 如果字符串为空,则返回 0 } String[] words = str.trim().split("\\s+"); // 去除首尾空白字符后按照任意空白字符分割 return words.length; // 返回分割后的单词数量 } public static void main(String[] args) { String input = "Hello, my name is John"; System.out.println("Word Count using split(): " + countWordsUsingSplit(input)); } } ``` 对于输入 `"Hello, my name is John"`,上述代码同样会输出: `Word Count using split(): 5` 需要注意的是,这种方法假设单词之间由单个或多个空格分隔,并且不会考虑标点符号的影响。 --- #### 结合 `HashMap` 记录每个单词的出现次数 如果不仅需要统计总的单词数量,还需要记录每个单词的具体出现次数,可以借助 `HashMap` 实现[^5]: ```java import java.util.HashMap; import java.util.Map; public class WordFrequencyCounter { public static Map<String, Integer> countWordFrequencies(String str) { String[] words = str.replaceAll("[^a-zA-Z ]", "").toLowerCase().trim().split("\\s+"); Map<String, Integer> frequencyMap = new HashMap<>(); for (String word : words) { if (!word.isEmpty()) { frequencyMap.put(word, frequencyMap.getOrDefault(word, 0) + 1); } } return frequencyMap; } public static void main(String[] args) { String input = "Hello hello world World"; Map<String, Integer> frequencies = countWordFrequencies(input); for (Map.Entry<String, Integer> entry : frequencies.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } } } ``` 运行结果如下: ``` hello: 2 world: 2 ``` 此处去除了非字母字符并将所有单词转为小写以便统一比较。 --- ### 总结 以上介绍了三种不同的方法用于统计字符串中的单词数量: 1. **正则表达式**适合精确匹配特定模式下的单词。 2. **`split` 方法**简单高效,适于基本场景下快速统计单词数目。 3. **`HashMap` 配合其他工具**可用于更复杂的分析需求,比如统计各单词频率。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值