【发布时间】:2017-03-24 15:43:13
【问题描述】:
我正在尝试编写一个返回唯一数字数组的函数。数组必须排序。当有多个元素时,该函数可以正常工作,但当数组中只有一个元素时,该函数不起作用。该函数应该返回在该数组中找到的唯一元素,但它返回的是一个空数组。
为什么会这样?
数组必须为 numUnique 和 removeDuplicates 排序
public static int numUnique (double[] list){
int uniques = 1;
int i = 1;
if(list.length == 0) return 0;
while(i<list.length){
if(list[i] != list[i - 1])
uniques++;
i++;
}
return uniques;
}
public static double[] removeDuplicates(double[] list){
double[] arrayOfUniques = new double[numUnique(list)];
if(list.length == 0) return arrayOfUniques;
int uniques = 1;
int i = 1;
arrayOfUniques[0] = list[0];
while(i < list.length){
if(list[i] != list[i - 1])
arrayOfUniques[uniques++] = list[i];
i++;
}
return arrayOfUniques;
}
数组:
double[] a = {11,11,21,31,41,41,51,61,61,61,71,71,81,91,91,100,100};
输出:
唯一数字:9
唯一数组: [11.0、21.0、31.0、41.0、51.0、61.0、71.0、81.0、91.0]
但是当数组只有一个元素时它不起作用:
double[] a = {11};
输出:
唯一数字:0
唯一数组:[]
【问题讨论】:
-
你有没有试过设置一些断点,看看当你传递一个元素的数组时发生了什么?
-
当
i == 0(因为这是第一次通过该循环)和list.length == 1时,您希望while(i < list.length-1)做什么? -
为什么不使用 Set 或 List 呢? stackoverflow.com/questions/3064423/…
-
谢谢。我看到了错误。
-
请考虑接受答案或投票,这就是论坛的运作方式,新人会更容易看到接受的帖子而不是不接受的帖子