在Java中出现循环问题。说明中的说明

时间:2017-11-15 21:25:59

标签: java arrays string loops char

我正在创建一个程序来计算字符串中的元音,辅音,空格和标点符号的数量。在继续讨论其他任何事情之前,我确保元音检查工作正常。我创建了一个似乎在逻辑上工作的循环,因为我通过java可视化工具运行它,所有东西都检查出来。但是,当我通过BlueJ IDE运行它时,我收到一个错误。它说:java.lang.StringIndexOutOfBoundsException:字符串索引超出范围。我不知道问题是什么,我将不胜感激任何帮助。这是java visualizer的链接,如果有人想自己测试一下,我会在下面发布代码:

private static <T> void executeScrollableQuery(@NotNull final Query query, final Consumer<T> recordConsumer) {
    query.setHint(QueryHints.RESULT_SET_TYPE, ResultSetType.ForwardOnly)
            .setHint(QueryHints.SCROLLABLE_CURSOR, HintValues.TRUE)
            .setHint(QueryHints.MAINTAIN_CACHE, HintValues.FALSE).setHint(QueryHints.JDBC_FETCH_SIZE, 500);

    ScrollableCursor cursor = null;
    try {
        cursor = (ScrollableCursor) query.getSingleResult();
        while (cursor.hasNext()) {
            recordConsumer.accept((T) cursor.next());
        }
    } finally {
        if (cursor != null) {
            cursor.close();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

问题出在你的&#34; for&#34;环。检查计数值是否小于str_compare值(这是给定字符串中字符的数字表示)。我认为这不是你所期待的。我建议几点做一些修改 - 它提供来自给定字符串(str_compare = user_str.charAt(count);)的检查字符,并在每个循环count值增加后检查此字符串中的下一个字符。在每个循环中都进行了验证,以检查当前是否到达字符串的结尾(count < user_str.length()

for (count = 0; count < user_str.length(); count++)
        {
            str_compare = user_str.charAt(count);
            for (int a : vowels)
            {
                if (a == str_compare)
                {
                    v_counter++;
                }
            }
        }

现在你的程序输出看起来更好:

Enter a string.
You entered: a vowel is here
There are 6 vowels.
There are 0 consonants.
There are 0 spaces.