问题描述:输入一行字符串(不考虑中文字符),分别统计出其中英文字母(不区分大小写)、空格、数字和其他字符的个数。 要求:请完成CharCount类的代码部分,测试类CharCountTest已提供,通过Scanner接收用户输入的字符串。
时间: 2024-10-09 16:03:56 浏览: 26
在Java中,你可以创建一个名为`CharCount`的类,它包含四个静态方法,每个方法对应于四种类型的字符计数:字母、空格、数字和其他字符。下面是一个简单的实现:
```java
import java.util.Scanner;
public class CharCount {
// 字符分类枚举
public enum Category {
ALPHABET("a-z", "A-Z"),
SPACE(" "),
NUMBER("0-9"),
OTHER("");
private String regex;
private String[] patterns;
Category(String regex) {
this.regex = regex;
}
Category(String... patterns) {
this.patterns = patterns;
for (String pattern : patterns) {
regex += "|" + pattern;
}
}
public boolean isMatch(char c) {
return regex != null && regex.matches(Character.toString(c));
}
public static int countByCategory(String input, Category category) {
int count = 0;
for (char c : input.toCharArray()) {
if (category.IsMatch(c)) {
count++;
}
}
return count;
}
}
// 测试类已提供,不需要在此展示
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入字符串:");
String input = scanner.nextLine();
scanner.close();
int alphaCount = CharCount.countByCategory(input, Category.ALPHABET);
int spaceCount = CharCount.countByCategory(input, Category.SPACE);
int numberCount = CharCount.countByCategory(input, Category.NUMBER);
int otherCount = input.length() - (alphaCount + spaceCount + numberCount);
System.out.println("字母数量: " + alphaCount);
System.out.println("空格数量: " + spaceCount);
System.out.println("数字数量: " + numberCount);
System.out.println("其他字符数量: " + otherCount);
}
}
```
在这个代码中,我们首先定义了一个枚举类`Category`,包含了对不同类型字符的正则表达式匹配。然后,`countByCategory`方法遍历输入的字符串并计算每种类别字符的数量。
在`main`方法里,我们从用户那里获取输入,并分别计算各种字符的数量。最后,通过输入长度减去前三者之和得到其他字符的数量。
阅读全文