【发布时间】:2016-12-18 11:24:44
【问题描述】:
我有这段代码,我想在其中为 char 变量添加值 97,但根据 ASCII 表获得字母“b”的最终数字 98,输出为 205。
我的代码有什么问题?
public class MyTest {
public static void main(String[] args) {
char result;
String input = "blablab";
result = charCounter(input);
}
private static char charCounter(String input) {
int[] array = new int[26];
for (int i = 0; i < input.length(); i++) {
char ch = input.charAt(i);
array[ch - 97]++;
}
int max = array[0];
for (int i = 1; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
char frequent = input.charAt(i);
System.out.println(frequent + 97);
}
}
return 45;
}
}
感谢您的帮助。
【问题讨论】:
-
在您的第二个
for循环中,是什么让您认为i应该是输入字符串的索引?例如,如果我输入f,我输入的是一个字符的字符串。但是array有 26 个条目,并且您的循环远远超过了那个点,所以input.charAt(i)将失败。 -
因为我得到了更频繁的字母'l'
-
不,你没有。更仔细地思考逻辑。如果输入字符串只是
f,甚至可以在纸上绘制数组和输入字符串以了解i在第二个循环中会做什么。 -
@T.J.Crowder:哦哦,对了,输出是:
String index out of range: 5 -
更多的字母应该是 'b' 三次而不是 'I' 两次。