これは私が書かなければならないプログラムですが、このエラーが発生します。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
50
上位と下位のアルファベットをそれぞれ保持するために、upper と lower の 2 つの配列を使用して完全なプログラムを作成します。文字列の例を入力するようにユーザーに依頼します。
これは木星からのテストです。誰が木星出身かすぐにわかります!!! 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");
}
}
}