编写程序统计一个输入的Java源码中关键字(区分大小写)出现的次数。说明如下: Java中共有53个关键字(自行百度) 从键盘输入一段源码,统计这段源码中出现的关键字的数量 注释中出现的关键字不用统计 字符串中出现的关键字不用统计 统计出的关键字及数量按照关键字升序进行排序输出 未输入源码则认为输入非法 输入格式: 输入Java源码字符串,可以一行或多行,以exit行作为结束标志 输出格式: 当未输入源码时,程序输出Wrong Format 当没有统计数据时,输出为空 当有统计数据时,关键字按照升序排列,每行输出一个关键字及数量,格式为数量\t关键字 输入样例: 在这里给出一组输入。例如: //Test public method public HashMap(int initialCapacity) { this(initialCapacity, DEFAULT_LOAD_FACTOR); } public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0) throw new IllegalArgumentException("Illegal initial capacity: " + initialCapacity); if (initialCapacity > MAXIMUM_CAPACITY) initialCapacity = MAXIMUM_CAPACITY; if (loadFactor <= 0 || Float.isNaN(loadFactor)) throw new IllegalArgumentException("Illegal load factor: " + loadFactor); this.loadFactor = loadFactor; this.threshold = tableSizeFor(initialCapacity); } exit 输出样例: 在这里给出相应的输出。例如: 1 float 3 if 2 int 2 new 2 public 3 this 2 throw 用java写
时间: 2024-03-03 11:48:11 浏览: 66
java代码-使用java输入一个长度不超过30的字符串然后再输入一个字符输出该字符在字符串中出现的次数的源代码
好的,请参考下面的Java代码实现:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line;
StringBuilder code = new StringBuilder();
while (scanner.hasNextLine()) {
line = scanner.nextLine().trim();
if ("exit".equals(line)) {
break;
}
code.append(line).append("\n");
}
String javaCode = code.toString();
if (javaCode.trim().length() == 0) {
System.out.println("Wrong Format");
return;
}
Map<String, Integer> keywordCount = new TreeMap<>();
String[] keywords = {
"abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const",
"continue", "default", "do", "double", "else", "enum", "extends", "final", "finally", "float",
"for", "goto", "if", "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"
};
String[] lines = javaCode.split("\n");
boolean inMultiLineComment = false;
for (String l : lines) {
l = l.trim();
if (l.startsWith("/*")) {
inMultiLineComment = true;
}
if (l.endsWith("*/")) {
inMultiLineComment = false;
continue;
}
if (inMultiLineComment) {
continue;
}
int idx = l.indexOf("//");
if (idx != -1) {
l = l.substring(0, idx);
}
String[] words = l.split("\\s+");
for (String w : words) {
if (w.isEmpty()) {
continue;
}
if (w.startsWith("\"") && w.endsWith("\"")) {
continue;
}
if (w.startsWith("'") && w.endsWith("'")) {
continue;
}
boolean isKeyword = Arrays.asList(keywords).contains(w);
if (isKeyword) {
int count = keywordCount.getOrDefault(w, 0);
keywordCount.put(w, count + 1);
}
}
}
if (keywordCount.isEmpty()) {
return;
}
for (Map.Entry<String, Integer> entry : keywordCount.entrySet()) {
System.out.println(entry.getValue() + "\t" + entry.getKey());
}
}
}
```
输入样例:
```
//Test
public class Main {
public static void main(String[] args) {
int a = 1;
int b = 2;
float c = 1.0f;
if (a > b) {
System.out.println("a > b");
} else {
System.out.println("a <= b");
}
}
}
exit
```
输出样例:
```
1 class
1 else
1 float
1 if
2 int
1 main
1 static
3 System
1 void
```
阅读全文