首页 > 解决方案 > 在这段代码中找不到错误,比较器

问题描述

我有一个在 JFrame 中实现比较器方法的类,由于某种原因,当你两次输入相同的名称时,程序会下降并打印这个 --> StringIndexOutOfBoundsException

方法代码:

public class OrdenarCrecienteTecnico implements Comparator<Tecnico> {

    @Override
    public int compare(Tecnico a, Tecnico b) {
        String PalabraA = a.getNombre().toUpperCase();
        String PalabraB = b.getNombre().toUpperCase();
        int i = 0;
    while(i<PalabraA.length() && i<PalabraB.length() && PalabraA.charAt(i) == PalabraB.charAt(i)){    
        i++;
    }
    return PalabraA.charAt(i) - PalabraB.charAt(i);
}

}

标签: javacomparator

解决方案


这段代码,当面对相同的字符串时,

while(i<PalabraA.length() && i<PalabraB.length() && PalabraA.charAt(i) == PalabraB.charAt(i)){    
    i++;
}

将以i等于字符串的长度退出循环。然后你执行这个:

return PalabraA.charAt(i) - PalabraB.charAt(i);

这保证会抛出越界异常,因为有效索引从 0 运行到 length-1。


推荐阅读