java - 在这段代码中找不到错误,比较器
问题描述
我有一个在 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);
}
}
解决方案
这段代码,当面对相同的字符串时,
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。
推荐阅读
- python - 仅给定标题的子字符串时使用 BeautifulSoup 查找 h3
- python-3.x - Python 3 打印覆盖 If 语句之前的同一行
- ruby - 尝试运行硒测试并得到这个
- java - Mockito:模拟包含 lambda 表达式的方法调用
- javascript - 如何在 TypeScript 中创建动态类?
- macos - 有没有办法在 macOS 上的目录中重新创建 /dev 以进行 chroot-ing?
- macos - 如何使按钮的可点击区域成为按钮框架
- image - 如果我只有在颤振中有互联网连接时如何加载图像?
- phaser-framework - 如何删除移相器 3 中的线段?
- sql - 如何计算postgres列表列中的出现次数?