java - java中比较两个字符串

标签 java

我正在尝试使用如下所示的算法与字符串进行比较 我的代码不起作用..在运行代码之前 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/

相关文章:

java - Spring JPA 实体不保存到数据库

java - 如何为 Eclipse 创建自定义配置编辑器插件?

java |二进制字符串转字节

java - 使用 Glide 库加载音频/音乐文件封面

java - -define 和 -limit 在 Im4java 中

java - 非 servlet Java HTTP 服务器

java - 通过 Java shell 执行的时间比通过控制台执行的时间长?

java - 在java中对半空数组进行排序

java - 在 weblogic 中安排一个 Java 程序每天运行

java - 有没有办法确认线程在执行结束时是否被杀死?