Java数组去重程序返回去重后长度错误 代码问题排查求助
Java数组去重长度错误问题修复
问题原因
两个问题共同导致长度输出错误:
remove_dupli方法仅支持有序数组去重:它的逻辑是相邻元素比较去重,若输入数组是乱序,会直接导致去重失败,返回的长度自然错误。你给出的示例输入是有序数组,所以这一步返回的length值本身是正确的3。- 多余调用
array_sort方法统计长度:你已经通过length = remove_dupli(myArray,length)拿到了正确的去重后长度,完全不需要再调用这个方法统计长度。且array_sort的逻辑是遍历数组的完整原始长度,会把去重后数组末尾残留的旧元素算入统计,比如你示例中数组去重后前三位是[2,3,4],第四位还是原来的4,方法遍历到第四位时会误判为新元素,最终返回错误的长度4。
修复方法
直接修改main方法最后一行输出长度的代码即可:
// 把原来的array_sort调用删掉,直接输出已经得到的length变量 System.out.println("\n数组新长度为:"+length);
如果需要支持乱序数组去重,只需要在调用remove_dupli前先给数组排序:
Arrays.sort(myArray); int length = myArray.length; length = remove_dupli(myArray,length);
内容的提问来源于stack exchange,提问作者El jinx
相关产品推荐
相关产品推荐

