Ali*_*ani 0 java string search
这是我要编写的程序,但我收到此错误,
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
50
Run Code Online (Sandbox Code Playgroud)
使用两个数组(上部和下部)编写一个完整的程序,分别保留上部和下部字母.要求用户输入字符串示例:
这是木星的测试.很快你会看到谁来自木星!可能是D博士
您的程序应解析字符串并跟踪字母数.两个数组的索引都是从0到25.这样做的逻辑方法是使用upper [0]来计算'A'的数量,使用upper [1]来计算'B'的数量,依此类推.同样对于较低的阵列.
输出应如下所示:
A: 0 a:2
B: 0 b:0
.
.
.
Z:0 z:0
Run Code Online (Sandbox Code Playgroud)
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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果输入的字符不是大字符,countUp则会抛出异常,如果输入的字符不是小字符,countLow则会抛出异常.
示例:如果您调用countLowa A,则计算'A' - 'a'哪些返回值-32并且不允许使用否定索引.
您需要检查逻辑并调用countLow或countUp,具体取决于字母的大小写并过滤掉无效字符.或重构整个事物并使用char[52]例如你持有小帽和大帽的地方.