我想知道是否可以在将辅音附加到StringBuilder变量的正确方法上获得一些帮助。

就目前而言,它可以成功地找到并计算在句子中找到的元音的数量,但是,我在创建一个排除它们的新变量时遇到了麻烦。

    char[] vowels = {'a', 'e', 'i', 'o', 'u'};
    int vowelCount = 0;
    String defParagraph = "This is an example sentence.";
    StringBuilder sbParagraph = new StringBuilder(defParagraph);
    StringBuilder vowParagraph = new StringBuilder("");

    System.out.print("Characters: " + sbParagraph.length());

    for (int i = 0; i < sbParagraph.length(); i++) {
        for (int j = 0; j < vowels.length; j++) {
            if (sbParagraph.toString().toLowerCase().charAt(i) == vowels[j]) {
                vowelCount++;
            }
        }
    }


我尝试在循环中简单地添加vowParagraph.append(sbParagraph.charAt(i),但是它在新字符串中给了我相同字符的倍数。我还考虑过复制原始的StringBuilder变量并只是删除字符,但我根本不知道执行此操作的最佳方法。

我不确定是否应该坚持使用两个循环和一个数组,还是应该简单地通过大量的i​​f / then条件检查值。说实话,这似乎是最简单的方法,但似乎也太冗长且效率低下。

如果有人可以帮助我阐明我的愚昧,我将不胜感激。这让我发疯。

最佳答案

您可以像这样更改循环,以避免倍数:

for (int i = 0; i < sbParagraph.length(); i++) {
    char c = defParagraph.toLowerCase().charAt(i);
    boolean isVowel = false;
    for (int j = 0; j < vowels.length; j++) {
        if (c == vowels[j]) {
            isVowel = true;
            break;
        }
    }
    if (isVowel) {
        vowelCount++;
    } else {
        vowParagraph.append(c);
    }
}

关于java - 带循环从句后附加特定字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12009969/

10-09 00:04
查看更多