初学者搜索数组

时间:2016-11-12 06:12:46

标签: java arrays search

我需要编写一个方法,当传递一个双数组 arr 和一个int值 target 时,返回一个项的第一个出现的索引,该项的整数部分等于目标。

例如,如果arr = {1.2,3.6,5.2,9.2,5.6}和target = 5,则目标必须返回2并且如果array为null则返回-1。

到目前为止,我的代码是

public static int yes(double[]arr, int target){
    if (arr == null){
        return -1;
    }

    for (int i= 0; i < arr.length(); i++){
        if(arr[i] == target)
            return i;
    } 

    return 1;
}

并且有一个编译错误,我只是不明白在double和int之间进行转换?感谢

6 个答案:

答案 0 :(得分:2)

在检查arr[i]是否与目标相等时,尝试将int投射到for (int i= 0; i < arr.length; i++){ if((int)arr[i] == target) return i; }

arry[i]

这样做会删除300*299的小数部分,使其成为整数,从而与目标相媲美。

答案 1 :(得分:1)

public class Main{
    public static void main (String[] args) {
        double[] arr = new double[]{1.2, 3.6, 5.2, 9.2, 5.6};
        int target =  31;
        System.out.println(yes(arr,target));
    }
    public static int yes(double[] arr, int target){
        if (arr == null){
            return -1;
        }

        for (int i= 0; i < arr.length; i++){
            if((arr[i] - target) >= 0.0 && (arr[i] - target) < 1.0)
                return i;
        }

        return -1;
    }
}

答案 2 :(得分:0)

你的代码是完美的,你只是错过了投两个

(int) arr[i] == target


public static int yes(double[]arr, int target){
    if (arr == null){
        return -1;
    }

    for (int i= 0; i < arr.length(); i++){
        if((int) arr[i] == target)
            return i;
    } 

    return 1;
}

答案 3 :(得分:0)

将此作为你的for循环

for (int i= 0; i < arr.length(); i++){
        if((int)arr[i] == target)
             return i;
    }

如果有帮助就Upvote!

答案 4 :(得分:0)

以下代码应该有效。它将与目标进行比较的双重转换为int。所以示例双数组:{1.2,3.6,5.2,9.2,5.6}将变为{1,3,5,9,5},当与目标进行比较时,您将得到正确的回报。如果你没有在数组中找到目标,我建议你让函数返回-1。祝你好运,编码愉快!

public static int yes(double[]arr, int target){
    if (arr == null){
        return -1;
    }

    for (int i= 0; i < arr.length; i++){
        if((int)arr[i] == target) return i;
        //use (int) to cast the double to an int. 3.9 and 3.2 would both become an int of 3
    } 

    return 1;
    //returns 1 if target is not in arr
}

答案 5 :(得分:0)

for (int i = 0; i < arr.length(); i++) {
    if ((int) arr[i] == target)
        return i;
}

这没关系,但我认为这可能更好。

for (int i = 0; i < arr.length(); i++) {
    if (arr[i] == (double)target)
        return i;
}