【发布时间】:2016-11-02 16:19:49
【问题描述】:
我正在尝试计算每个字符在字符串中出现的次数,但是程序打印出不同的大小写计数以及 不 打印出一个不显示的字符计数为 0。
所需的输出应该类似于...
A = 0
B = 1
C = 2
...
X = 0
Y = 1
Z = 2
以及列出 0-9 出现或不出现的次数。我已经找到了一种防止大写/小写字符不被计算在一起的工作方法(p = 1,P = 1),但不确定它是否最有效。但主要问题是让程序打印字符串中没有出现的字符。我遇到的大多数其他帖子都涉及用户检查某个字符而不是所有字符出现的次数。
我目前的代码是
import java.util.*;
import java.io.*;
public class LetterCount {
public static void main(String[] args) throws FileNotFoundException{
String myInput;
Scanner fileIn = new Scanner(new File("input_test"));
myInput = fileIn.nextLine();
myInput=charAdjust(myInput);
charCounter(myInput);
fileIn.close();
}
public static String charAdjust(String s) throws FileNotFoundException {
String str;
Scanner fileIn = new Scanner(new File("input_test"));
str=fileIn.nextLine();
System.out.println("-----------");
fileIn.close();
return (str.toUpperCase());
}
public static String charCounter(String str) {
int[]counter = new int[(int) Character.MAX_VALUE];
for (int i=0; i<str.length(); i++){
char charAt = str.charAt(i);
counter[(int) charAt]++;
}
for (int i=0; i<counter.length; i++) {
if (counter[i] > 0)
System.out.println((char)i + " = " + counter[i]);
}
return str;
}
}
【问题讨论】:
-
您是否只查找某些特定字符?否则,65536 个字符位置中的大多数将打印零。
-
如果只有 a-z,您可以使用 26 的数组并从 str.charAt(i) 中减去 'a' 或 'A'。