这是我必须编写的程序,但出现此错误,
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
50
编写一个完整的程序,使用两个数组,上和下分别保留上下字母。要求用户输入字符串示例:
这是来自木星的测试。很快你就会看到谁来自木星!!!可能是D博士。
您的程序应该解析字符串并跟踪字母的数量。两个数组的索引都是从 0 到 25。这样做的逻辑方法是使用 upper[0] 来计算“A”的数量,使用 upper[1] 来计算“B”的数量,依此类推。同样对于较低的阵列。
输出应如下所示:
A: 0 a:2
B: 0 b:0
.
.
.
Z:0 z:0
代码
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class Letter {
public static void main(String[] args) {
// this is get results
char[] chars = userEnters();
System.out.println();
System.out.println("Occurrences of each letter are:");
PrintArray(countLow(chars), countUp(chars));
}
public static char[] userEnters() {
String inputX = JOptionPane.showInputDialog("Enter line of text: ");
char[] chars = inputX.toCharArray();
return chars;
}
public static int[] countLow(char[] input) {
int[] counts = new int[26];
for (int i = 0; i < input.length; i++) {
counts[input[i] - 'a']++;
}
return counts;
}
public static int[] countUp(char[] input2) {
int[] countsUp = new int[26];
for (int i = 0; i < input2.length; i++) {
countsUp[input2[i] - 'A']++;
}
return countsUp;
}
public static void PrintArray(int[] counts, int[] countsUp) {
for (int i = 0; i < counts.length; i++) {
System.out.print(counts[i] + " " + (char) ('a' + i) + " ");
System.out.print(countsUp[i] + " " + (char) ('A' + i) + "\n");
}
}
}