-4

我有一个while循环,应该将一个单词分成单独的字母......它可以工作,但是当我尝试检查一个不存在的子字符串是否为空时,它会抛出异常......

    private static void seperateWord(String word) {
    boolean running = true;
    int count = 0;
    while (running) {
        if (word.substring(count, count + 1).equals("null")) {
            running = false;
            return;
        } else {
            letter[count] = word.substring(count, count + 1);
            System.out.println(letter[count]);
            count++;
        }
    }
}

它确实正确地输出了所有字母,直到它到达字符串的末尾并且没有什么可读取的......因为它只是不存在。它抛出这个异常......

    Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.substring(Unknown Source)
at Class.seperateWord(Class.java:33)
at Class.main(Class.java:13)

第 33 行是 :: if (input.substring(count, count + 1).equals("null")) {

第 13 行就是我调用该方法的地方。

我输入的文字是“abc”

提前感谢您的帮助!

4

1 回答 1

4

您正试图让子字符串从索引 3 到索引 4 上只有 3 个字符的字符串。这就是为什么你会得到一个例外。

而且,input.substring(count, count + 1).equals("null")显然永远不会是真的。1 个字符的字符串怎么可能等于"null"4 个字符的字符串?

阅读 String 类的 API 文档。它有一个length()返回字符串长度的方法,你应该用它来停止你的循环。它还有一个charAt()方法可以返回给定索引处的字符。

于 2013-03-10T16:23:25.157 回答