我已经在这个问题上工作了两天,不知道我要去哪里错了。

本质上,我需要向用户询问一串单词。
我需要设置一个由26个元素组成的int数组,其中包含小写字母的计数和一个大写字母的计数。

我无法使程序正确地与数组元素进行比较。到目前为止,这是我的代码:

public class Lab17Array {

    public static void main(String[] args)
    {
        Scanner kb = new Scanner (System.in);
        int lLetter = 0;
        int uLetter = 0;

        // int[] alph = new int [26];
        int alph [] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
        int Alph [] = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

        System.out.println("Enter a phrase");
        String user = kb.nextLine();
        // to print out length of word
        System.out.println("Total number of letters is " + user.length());

        for(int i = 0; i < user.length(); i++)
        {


        }

        System.out.println("Upper case letters are:" + uLetter);
        System.out.println("Lower case letters are:" + lLetter);
        int otherL = user.length() - (uLetter + lLetter);

        // to print out other chars that aren't letters
        System.out.println("Number of all other letters is " + otherL );
    }
}


在我的for循环中,我一直在尝试不同的if条件。我不知道我在想什么?

最佳答案

使用数组

您可以使用String.toCharArray()for-each loop来迭代user Input(您似乎已经更改了帖子和注释之间的变量名)。不管怎样

for (char ch : user.toCharArray()) {
    if (Character.isLowerCase(ch)) {
        lLetter++;
    } else if (Character.isUpperCase(ch)) {
        uLetter++;
    }
}


使用正则表达式

您可以通过使用正则表达式从输入中删除所有非小写字符,以及从输入中删除所有非大写字符来减少代码。

int lLetter = user.replaceAll("[^a-z]", "").length(); // <-- removes everything not a-z
int uLetter = user.replaceAll("[^A-Z]", "").length(); // <-- removes everything not A-Z

10-07 18:58