我正在尝试使用如下所示的算法与字符串进行比较 我的代码不起作用..在运行代码之前 Eclipse 没有显示任何错误
public class MysteryClass {
public static void mystery(String n) {
String k= "alla";
if (k.charAt(k.length())==n.charAt(n.length())) {
System.out.println("palindrom");
} else {
System.out.println("not palindrom");
}
}
public static void main(String[] args) {
MysteryClass.mystery("alla");
}
}
但是我们运行我得到的代码
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 4
at java.lang.String.charAt(String.java:658)
at shapes.MysteryClass.mystery(MysteryClass.java:6)
at shapes.MysteryClass.main(MysteryClass.java:15)
如何解决这个问题? 谢谢
最佳答案
不确定您想要什么,但是您的 StringIndexOutOfBoundsException
是由于访问不存在的数组索引引起的。
以您的String k = "alla"
为例,k.length()
将返回4
,因为"alla"
有四个字符,并且您正在访问k.charAt(4)
,"alla"
中断如下:
a l l a // string
0 1 2 3 // index
正如您所看到的,"alla"
的最后一个索引是 3
,这就是您得到 StringIndexOutOfBoundsException
的原因。但您可以使用 .length() -1
解决它,如下所示:
if (k.charAt(k.length()-1)==n.charAt(n.length()-1)) {
System.out.println("palindrom");
} else {
System.out.println("not palindrom");
替代方案:
如果你想比较两个字符串
,也可以使用.equals
方法,如下:
if (k.equals(n)) {
System.out.println("palindrom");
} else {
System.out.println("not palindrom");
关于java - java中比较两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33026861/