统计任意一个字符串中的英文单词总数、最长单词的长度、最短单词的长度、单词的平均长度。英文单词定义为字母串,非字母的字符都是单词之间的分隔符,例如,"ab+12cd*123fdfg%^&(as23BG"则单词总数为5,最长长度为4,最短长度为2,平均长度为2.4.
时间: 2024-03-16 17:41:09 浏览: 231
好的,那我再给你写一个满足你要求的 Java 方法:
```java
public static void countWords(String str) {
String[] words = str.split("[^a-zA-Z]+"); // 按非字母字符分割字符串
int wordCount = words.length; // 单词总数
int maxLength = 0; // 最长的单词长度
int minLength = Integer.MAX_VALUE; // 最短的单词长度
int totalLength = 0; // 所有单词长度之和
for (String word : words) {
maxLength = Math.max(maxLength, word.length()); // 更新最长单词长度
minLength = Math.min(minLength, word.length()); // 更新最短单词长度
totalLength += word.length(); // 累计单词长度
}
double averageLength = (double) totalLength / wordCount; // 计算平均单词长度
System.out.println("单词总数:" + wordCount);
System.out.println("最长的单词长度:" + maxLength);
System.out.println("最短的单词长度:" + minLength);
System.out.println("单词的平均长度:" + averageLength);
}
```
这个方法与之前的方法相比,唯一的区别在于 `split()` 方法的参数,这里使用了一个正则表达式 `[^a-zA-Z]+`,表示按非字母字符分割字符串。其他部分的代码与之前的方法相同。
例如,输入字符串 `"ab+12cd*123fdfg%^&(as23BG"`,输出结果为:
```
单词总数:5
最长的单词长度:4
最短的单词长度:2
单词的平均长度:2.4
```
希望这个方法满足了你的需求,如果还有问题,欢迎继续提问。
阅读全文