Java - 超出范围的例外

时间:2014-09-12 16:26:24

标签: java indexoutofboundsexception

我收到以下错误:java.lang.StringIndexOutOfBoundsException我无法弄清楚原因。希望你们中的一个人知道解决方案。

提前致谢。

static boolean palindromeCheck(String toBeChecked) {

    String reverse = "", inputWithoutSpaces = "";

    for (int i = 0; i < toBeChecked.length(); i++)
        inputWithoutSpaces += toBeChecked.charAt(i);

    for (int i = inputWithoutSpaces.length(); i > 0; i--) {

        if (inputWithoutSpaces.charAt(i) != ' ')
            reverse += inputWithoutSpaces.charAt(i);

    }

    return (inputWithoutSpaces == reverse) ? true : false;

}

3 个答案:

答案 0 :(得分:0)

charAt()接受从0到length()-1的索引,而不是从1到length()

答案 1 :(得分:0)

问题在于:for (int i = inputWithoutSpaces.length(); i > 0; i--)

让我们说inputWithoutSpaces的长度为10.即索引09。在循环中,您从inputWithoutSpaces.length()索引10开始计算。哪个不存在。加强了越界异常。

将其更改为for (int i = inputWithoutSpaces.length() - 1; i >= 0; i--),因此您可以从9计算到0

答案 2 :(得分:0)

你的字符串有一个特定的长度(比如说长度:5),但是当你想要反向迭代它时,你需要从4开始并下降到0.这意味着你需要改变你的for循环并使它成为像这样:

for (int i = inputWithoutSpaces.length() - 1; i >= 0; i--)