java检查字母频率

java检查字母频率,java,arrays,Java,Arrays,我正在写一个程序来计算一个句子的频率、字数和字长。我已经编写了代码,但在初始化数组时出错,但我不确定如何使用多种方法进行初始化。我在x[I]处收到一个错误 import java.util.Scanner; public class ScanningText { public static int countLetters (String x) { int totalLetter, i; totalLetter = 0; for (

我正在写一个程序来计算一个句子的频率、字数和字长。我已经编写了代码,但在初始化
数组时出错,但我不确定如何使用多种方法进行初始化。我在
x[I]
处收到一个错误

import java.util.Scanner;


public class ScanningText {

    public static int countLetters (String x) {
        int totalLetter, i;
        totalLetter = 0;

        for (i = 0; i < x.length(); i++) {
            for (int upper = 65; upper <= 90; upper++) {
                if (x[i] == upper)
                    totalLetter += 1;
            } for (int lower = 97; lower <= 122; lower++) {
                if (x[i] == lower)
                    totalLetter+=1;
            }
        } return totalLetter;
    }
    public static int words (String x) {
        int totalWord, i;

        for (i = 0; i < x.length(); i++) {
            if (x[i] == 32)
                totalWord += 1;
        } return totalWord;
    }
    public static int longest (String x) {
        int longestWord, wordLength, i;
        longestWord = 0;
        wordLength = 0;

        for (i = 0; i < x.length(); i++) {
            for (int upper = 65; upper <= 90; upper++) {
                if (x[i] == upper)
                    wordLength += 1;
            } for (int lower = 97; lower <= 122; lower++) {
                if (x[i] == lower)
                    wordLength += 1;
            } if (x[i] == 32 || x[i + 1] == 0) {
                if (wordLength > longestWord)
                    longestWord = wordLength;
            wordLength = 0;
            }
        } return longestWord;
    }
    public static int frequency (String x) {
        int letter, i;
        int[] amount;
        amount = new int[26];

        for (i = 0; i < x.length(); i++) {
            for (int upper = 65; upper <= 90; upper++) {
                if (x[i] == upper) {
                    letter = upper;
                    letter = letter - 65;
                    for (int d = 0; d < 26; d++) {
                    // d is occurence of each letter
                        if (d == letter)
                            amount[d] += 1;
                    }
                }
            } for (int lower = 97; lower < 123; lower++) {
                if (x[i] == lower) {
                    letter == lower;
                    letter = letter - 97;
                    for (int k = 0; k <= 25; k++) {
                        if (k == letter)
                            amount[k] += 1;
                    }
                }
            }
        }
    }
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String text;
        int[] amount;
        amount = new int[26];
        String list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

        System.out.println("Enter a single line of text");
        text = input.nextLine();

        System.out.println("Total letters: " + countLetters(text));
        System.out.println("Total Words: " + words(text));
        System.out.println("Longest word length is: " + longest(text));
        System.out.println("Frequency is: " + frequency(text));

        for ( int i = 0; i < 26; i++) {
            if (amount[i] != 0)
                System.out.println(list[i] + " -- " + amount[i]);
        }
    }

}
import java.util.Scanner;
公共类扫描文本{
公共静态整数计数字母(字符串x){
int Totaletter,i;
Totaletter=0;
对于(i=0;i对于(int upper=65;upper
x
String
引用而不是数组

public static int countLetters (String x) {

如果您想在我看到的位置添加ess字符,谢谢!现在我可以运行程序了,频率不会显示。有没有办法从频率方法中提取表达式并将其打印到最后一行,其中显示“频率为:”?