如何查找数字是否在数组中?

时间:2014-02-04 20:47:10

标签: java if-statement for-loop methods boolean

尝试编写一种方法来告诉我数字是否在数组中。到目前为止,我有..

    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.
}

到目前为止,这对我没有用,由于某种原因它无法识别阵列中是否存在某些数字。

4 个答案:

答案 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。

如果你在那里有平等,那么它就在列表中,否则它不在列表中。

此外,通常不会将ab的双打与==进行比较。使用

类似于: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);
}