尝试编写一种方法来告诉我数字是否在数组中。到目前为止,我有..
public static boolean inList(double number, double[] list){
for (double i : list)
{
if (i == number){
return false;
}
}
return true; //if its not in the array I want the if statement to run.
}
到目前为止,这对我没有用,由于某种原因它无法识别阵列中是否存在某些数字。
答案 0 :(得分:6)
您混淆了return
语句。它应该是这样的:
public static boolean inList(double number, double[] list){
for (double i : list)
{
if (i == number){
//return true when you've found the match!
return true;
}
}
//return false here because you finished looking at the entire array
//and couldn't find a match.
return false;
}
答案 1 :(得分:2)
您需要在代码中交换true和false。
如果你在那里有平等,那么它就在列表中,否则它不在列表中。
此外,通常不会将a
和b
的双打与==
进行比较。使用
类似于:Math.abs(a - b) < EPS
,其中EPS = 0.00001
可以说。
答案 2 :(得分:2)
比较双打时要考虑的一点是,它们的表现并不完全不同。这意味着1.0 + 2.0不一定等于3.0,但可能等于2.999999 ....或3.000001。
一件好事就是使用一个允许稍微松弛(一个epsilon)的比较,使你可以将你所比较的值与你所比较的数字相距一些(非常接近)。
类似于:
public static boolean inList(double number, double[] list){
for (double i : list)
{
if (Math.abs(i - number) < 0.0000000001){
return true;
}
}
return false; //if its not in the array I want the if statement to run.
}
答案 3 :(得分:1)
如果你想对java数组做一些严肃的事情,不要错过java.util.Arrays!
在(已排序)数组中查找数字的函数将是:
double[] theArray = {1.24, 5.23, 1.1, 6.466, 35.1, 34.0};
java.util.Arrays.sort(theArray); //for binarySearch to work
public static boolean inArray(double i, double[] theSortedArray){
return (java.util.Arrays.binarySearch(i, theSortedArray) >=0);
}