我已经在这个问题上工作了两天,不知道我要去哪里错了。
本质上,我需要向用户询问一串单词。
我需要设置一个由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