想问一下key和elements[end]为什么不能比较大小,强转为int也不行

人山人海肉最可爱 2019-01-26 10:32:46
public class InsertSorter implements Sorter {

@Override
public void sort(Element[] elements) {

for(int i = 1; i < elements.length; i++){
Element key = elements[i];
int end = i - 1;
while((end >= 0) && (key < elements[end])){
elements[end + 1] = elements[end];
end--;
}
elements[end] = key;
}
}
}
...全文
223 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
好的,谢谢,我这样改了:elements[end].compareTo(key) > 0,但我还是不是很清楚,比如Integer它实现了Comparable接口,就可以直接使用>、<这些运算符了吗?Element没有实现Comparable接口也可以调用它的comparaTo()方法吗?Integer类型的数进行比较不应该是调用comparaTo()方法吗? 还有就是测试,我这样写,提示data的类型是错的: int[] data = new int[]{4,2,61,7,0}; new InsertSorter().sort(data);
  • 打赏
  • 举报
回复
好的,谢谢各位大佬的指点,我已经找到了我的错误所在
qq_39936465 2019-01-28
  • 打赏
  • 举报
回复
引用 3 楼 人山人海肉最可爱 的回复:
好的,谢谢,我这样改了:elements[end].compareTo(key) > 0,但我还是不是很清楚,比如Integer它实现了Comparable接口,就可以直接使用>、<这些运算符了吗?Element没有实现Comparable接口也可以调用它的comparaTo()方法吗?Integer类型的数进行比较不应该是调用comparaTo()方法吗?

还有就是测试,我这样写,提示data的类型是错的:
int[] data = new int[]{4,2,61,7,0};
new InsertSorter().sort(data);


你到底想干么? element 数组是一个树数组,内包含父指针,子指针,和值,当然不能直接比较咯,你data是一个int数组是线性数组,当然不能直接传入element数组中,你先要理解数据的类型。
十八道胡同 2019-01-28
  • 打赏
  • 举报
回复
你的sort传入的是Element[] elements 数组,你的int[] data = new int[]{4,2,61,7,0}; 是int[]数组,类型不一致的。
Frank6600 2019-01-27
  • 打赏
  • 举报
回复
因为Element没有实现Comparable接口

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧