【问题标题】:Java number of cons in a string, not working字符串中的 Java 数量,不起作用
【发布时间】:2019-03-14 20:38:32
【问题描述】:

我正在尝试查找字符串中辅音的数量。以下是我为该方法提供的代码,但是当我运行它时它一直返回 0。我在用吗!错误的?我需要为每个个案都这样做吗?即:!(ch ==('a'))|| !(ch == ('o'))

public int numCons() {
    int i = 0;
    int length = quote.length();
    int con = 0;
    String string;

    for (i = 0; i < length; i++) {
        //string = quote.substring(i);
        char ch = quote.charAt(i);

        if (!(ch == ('a') || ch == ('e') || ch == ('i') 
                || ch == ('o') || ch == ('u') || ch == ('y') || ch == ('A') 
                || ch == ('E') || ch == ('I') || ch == ('O') || ch == ('U') || ch == ('Y'))) 
            if (Character.isLetter(i)) 
                con++;
        }
    return con;
}

【问题讨论】:

  • 你检查int i是否是一个字母。这是你想要的吗?
  • 如果quote 包含数字或标点符号怎么办?
  • @AndrewS isLetter 也不会打折标点符号吗?

标签: java string character


【解决方案1】:

i 是您迭代的索引,而不是字符。你可能的意思是检查

if (Character.isLetter(ch)) 

【讨论】:

  • 谢谢!我完全错过了。我设置 NOT (!) 的方式是否正确?
【解决方案2】:

顺便说一句,如果您使用的是 Java 8+,那么您可以使用 Stream API 一次性完成:

quote.chars().filter(c -> !"aeiou".contains(String.valueOf((char) c).toLowerCase())).count();

(可能还有更优雅的方式,这只是我写的第一件事)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 2012-03-03
    • 2015-02-04
    • 2015-01-12
    • 1970-01-01
    相关资源
    最近更新 更多