Palindrome程序正在运行但是给出了错误消息

时间:2015-08-01 17:04:49

标签: java palindrome

该程序用于判断单词是否为回文(前后相同的单词)。我无法弄清楚为什么我的计算机会运行此程序,同时还有一条错误信息可以使用它。有人可以解释一下吗?

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out
of range:

public class Palindrome {
    public static void main(String[] args)
    {
        System.out.println("Enter word here: ");
        String a = StdIn.readLine();

        for(int i = a.length() - 1 ; i >= 0; ++i)
        {
            if (a.charAt(i) != a.charAt(a.length() - i)) System.out.println("Not a Palindrome");
            else System.out.println("Palindrome");
        }

    }
}

5 个答案:

答案 0 :(得分:1)

循环迭代变量i正在以错误的方向递增。你应该

public void paint(Graphics g)
{
    g.drawImage(getImage("Numbers/icon0.png"), 0, 0, 32, 32, null);
    repaint();
}

OR

for(int i = 0; i < a.length(); ++i)

您还需要更改

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

a.charAt(a.length() - i))

因为charAt使用基于零的索引,就像所有其他字符串操作方法一样。

答案 1 :(得分:0)

递减变量i而不是在for循环中递增它?

答案 2 :(得分:0)

您的a.charAt((a.length() - 1) - i) 循环应该递减for而不是增加它。

答案 3 :(得分:0)

您正在递增计数器i,但您应该递减计数器,因为您从i = a.length() - 1开始。这也是异常试图告诉你的。此外,您要比较字符串的所有字符两次!

答案 4 :(得分:0)

抛出异常时程序停止。 你有几个错误所以我决定重写你的代码。从main调用此方法:

  static void isPalindrome(String s) {
        boolean res = true;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) != s.charAt(s.length() - 1 - i)) {
                res = false;
                break;
            }
        }
        System.out.println(res ? "Palindrome" : "Not s Palindrome");
    }