编写程序统计一个输入的Java源码中关键字(区分大小写)出现的次数。说明如下: 代码小于60行。使用正则表达式。Java中共有53个关键字(自行百度) 从键盘输入一段源码,统计这段源码中出现的关键字的数量 注释中出现的关键字不用统计 字符串中出现的关键字不用统计 统计出的关键字及数量按照关键字升序进行排序输出 未输入源码则认为输入非法 输入格式: 输入Java源码字符串,可以一行或多行,以exit行作为结束标志 输出格式: 当未输入源码时,程序输出Wrong Format 当没有统计数据时,输出为空 当有统计数据时,关键字按照升序排列,每行输出一个关键字及数量,格式为数量\t关键字
时间: 2024-03-03 19:47:23 浏览: 69
代码行统计(可以对C\C++、Java的源代码进行统计,统计结果包括:总行数、空行数、注释行数和代码行数,统计结果可以以表格的形式显示给用户或另存为文件)
5星 · 资源好评率100%
好的,我可以为您编写这个程序。以下是程序代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
StringBuilder code = new StringBuilder();
String line;
while (!(line = scanner.nextLine()).equals("exit")) {
code.append(line).append("\n");
}
String[] keywords = {"abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "default", "do", "double", "else", "enum", "extends", "final", "finally", "float", "for", "if", "goto", "implements", "import", "instanceof", "int", "interface", "long", "native", "new", "package", "private", "protected", "public", "return", "short", "static", "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "try", "void", "volatile", "while"};
Map<String, Integer> keywordCount = new TreeMap<>();
for (String keyword : keywords) {
keywordCount.put(keyword, 0);
}
String codeStr = code.toString();
codeStr = codeStr.replaceAll("\".*?\"", ""); // 去除字符串中的内容
codeStr = codeStr.replaceAll("//.*?\n", ""); // 去除单行注释
codeStr = codeStr.replaceAll("/\\*.*?\\*/", ""); // 去除多行注释
for (String keyword : keywords) {
String regex = "\\b" + keyword + "\\b";
int count = codeStr.split(regex, -1).length - 1;
keywordCount.put(keyword, count);
}
boolean hasResult = false;
for (Map.Entry<String, Integer> entry : keywordCount.entrySet()) {
if (entry.getValue() > 0) {
System.out.println(entry.getValue() + "\t" + entry.getKey());
hasResult = true;
}
}
if (!hasResult) {
System.out.println();
}
}
}
```
程序的思路是先读入源码,并将其转换成一个字符串。然后使用正则表达式去除字符串和注释中的内容,只留下代码部分。接着,使用 Java 中的关键字数组和一个 TreeMap 统计每个关键字出现的次数。最后,按照升序排列关键字,输出每个关键字的出现次数。
注意,程序中使用了 Java 中的正则表达式,可以匹配各种形式的注释和字符串。如果您对正则表达式不熟悉,可以参考 Java 的正则表达式文档。
阅读全文