提问者:小点点

字符串''中出现字母-错误的代码和输出


    package HomePlace;

import java.util.Scanner;

public class CountLetters {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a word: ");
        String word = input.next();
        word = word.toUpperCase();

        int[] letterCount = new int[26];
        for (int count = 0; count < word.length(); count++) {
            char[] letters = word.toCharArray();
            for (int count2 = 0; count2 < letters.length; count2++) {
                char lett = letters[count2];
                if ( (lett >= 'A') & (lett <= 'Z') ) {
                    letterCount[lett - 'A']++;
                }
            }
        }
        for (char count = 'A'; count <= 'Z'; count++) {
            System.out.println(count + ": " + letterCount[count - 'A'] + " ");
        }
        System.out.println();
    }
}

所以我得到了这个密码。。。 以及我想要的输出格式。 但不知何故,输出会计算字母的数量。 例如,如果我输入ABC,输出将是

A: 3
B: 3
C: 3
.
.
.

等等。 我希望输出计数每个出现的字母。 所以如果我把Abc它将是

A: 1
B: 1
C: 1
.
.
.

等等。 我在这里做错了代码的哪一部分?


共1个答案

匿名用户

首先,你使用的是POO语言,这意味着你必须使用函数。 如果你只是在寻找一个快速的解决方案,那么正确的代码应该是这样的:

package stck;
import java.util.Scanner;

public class CountLetters {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter a word: ");
        String word = input.next();
        word = word.toUpperCase();

        int[] letterCount = new int[26];
        char[] letters = word.toCharArray();
        for (int count2 = 0; count2 < letters.length; count2++) {
            char lett = letters[count2];
            if ( (lett >= 'A') && (lett <= 'Z') ) {
                letterCount[lett - 'A']++;
            }
        }
        for (char count = 'A'; count <= 'Z'; count++) {
            System.out.println(count + ": " + letterCount[count - 'A'] + " ");
        }
        System.out.println();
    }
}

这个循环没有用

for (int count = 0; count < word.length(); count++) 

当你和环境一起工作时要小心

if ( (lett >= 'A') & (lett <= 'Z') ) {`