我正在用于查找是否存在一行文本中的信对2个字母,例如,如果“AA”被输入时,我会加1字母的程序[0] [0]。当我试着输入“为aabbcc”我得到这个错误:OutOfBounds异常与2D阵列
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 32
at Freq.processLine(Freq.java:25)
at Freq.main(Freq.java:12)
当我输入“AABBCC”我得到这个错误:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.charAt(String.java:658)
at Freq.processLine(Freq.java:23)
at Freq.main(Freq.java:12)
我不知道为什么我收到这些错误。任何帮助将不胜感激。这里是我的代码:
import java.util.Scanner;
public class Freq{
private static final int ROWS = 26;
private static final int COLS = 26;
private static int[] [] alphabet = new int[ROWS][COLS];
public static void main(String[] args) {
String line;
Scanner userInput = new Scanner(System.in);
while(userInput.hasNextLine()) {
line = userInput.nextLine();
processLine(line);
}
}
public static void processLine(String line) {
line.toUpperCase();
for(int i = 0; i < alphabet.length; i++) {
for(int j = 0; j < alphabet[i].length; j++) {
for (int a = 0; a < line.length(); a++) {
char firstLetter = line.charAt(a);
char secondLetter = line.charAt(a + 1);
if (firstLetter == secondLetter) {
alphabet[firstLetter - 65][secondLetter - 65] = alphabet[firstLetter - 65][secondLetter - 65] + 1;
}
}
}
}
for (int b = 0; b < alphabet.length; b++) {
for (int c = 0; c < alphabet[b].length; c++){
System.out.print(alphabet[b][c] + " ");
System.out.println();
}
}
}
}
保佑你的灵魂 – Coder117