java - 尝试计算元音、辅音和空格,但忽略其他字符

标签 java

这是我的代码,它工作得很好(我认为),但是如果我想在一个句子中输入一些其他字符,例如“.,*:;”...等,那么它们肯定会被算作辅音。

有没有办法缩短这个长度,而无需输入所有非元音的字符?

另外,我知道我可以使用“ignoreCase()”而不是键入元音的所有大写版本,但在我键入它们后意识到并且我太顽固而无法更改:D

public void compute() {
    for (int i = 0; i < str.length(); i++) {
        if (str.charAt(i) == 'a' || str.charAt(i) == 'e' || str.charAt(i) == 'i' || str.charAt(i) == 'o' || str.charAt(i) == 'u' || str.charAt(i) == 'A'
                || str.charAt(i) == 'E' || str.charAt(i) == 'I' || str.charAt(i) == 'O' || str.charAt(i) == 'U') {
            vowels++;
        } else if (str.charAt(i) == ' ') {
            spaces++;
        } else {
            cons++;
        }
    }
}

最佳答案

您可以使用Character.isLetter方法来检查字符是否是有效字母或某些特殊字符。这是javadoc isLetter 方法说:

public static boolean isLetter(char ch)

Determines if the specified character is a letter. A character is considered to be a letter if its general category type, provided by Character.getType(ch), is any of the following:

  • UPPERCASE_LETTER
  • LOWERCASE_LETTER
  • TITLECASE_LETTER
  • MODIFIER_LETTER
  • OTHER_LETTER

Not all letters have case. Many characters are letters but are neither uppercase nor lowercase nor titlecase.

关于java - 尝试计算元音、辅音和空格,但忽略其他字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20558764/

相关文章:

Java FileHandler 禁用日志轮转

java - 将本地连接重定向到另一台服务器?

java - 注释处理器是否可以访问上一轮生成的类型?

java - Integer.equals() 和 Objects.equals() 的比较

java - 应用程序启动时显示对话框并修复抽屉导航问题

java - 如何从 onActivityResult(int requestCode, int resultCode, Intent data) 获取结果?

java - IDEA : javac: source release 1. 7 需要目标版本 1.7

java - 在 windows 7 上安装 play framework 2.4

java - Jackson 序列化类文字

java - REST API - 嵌套对象