找不到此代码中的错误,比较器



我有一个类,它在JFrame中实现了comparator方法,由于某种原因,当你两次输入相同的名称时,程序就会失败并打印出来-->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++;
}

将在CCD_ 1等于字符串长度的情况下退出循环。然后你执行这个:

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

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

另一个答案描述了您的具体问题和解决方案。

你似乎工作太努力了。只需让两个字符串进行比较。

public class OrdenarCrecienteTecnico implements Comparator<Tecnico> {
@Override
public int compare(Tecnico a, Tecnico b) {
if( Objects.isNull( a ) || Objects.isNull( b ) ) { return -1 ; }
return a.getNombre().compareToIgnoreCase( a.getNombre() ) ;
}

相关内容

  • 没有找到相关文章

最新更新