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