每封信的出现次数

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)

ass*_*ias 7

如果输入的字符不是大字符,countUp则会抛出异常,如果输入的字符不是小字符,countLow则会抛出异常.

示例:如果您调用countLowa A,则计算'A' - 'a'哪些返回值-32并且不允许使用否定索引.

您需要检查逻辑并调用countLow或countUp,具体取决于字母的大小写并过滤掉无效字符.或重构整个事物并使用char[52]例如你持有小帽和大帽的地方.