我不断收到此错误:错误:不兼容的类型:可能有损转换从double到int

时间:2017-10-30 21:01:54

标签: java error-handling

我通过指向十进制整数的小箭头得到此错误。是否允许小数?为了使小数可以接受,我需要写什么?这是我的代码:

public class BinarySearch {
public static final int NOT_FOUND = -1;

    public static int search(int[] arr, int searchValue) {
        int left = 0;
        int right = arr.length - 1;
        return binarySearch(arr, searchValue, left, right);
    }

    private static int binarySearch(int[] arr, int searchValue, int left, int right) {
        if (right < left) {
            return NOT_FOUND;
        }

        int mid = (left + right) >>> 1;
        if (searchValue > arr[mid]) {
            return binarySearch(arr, searchValue, mid + 1, right);
        } else if (searchValue < arr[mid]) {
            return binarySearch(arr, searchValue, left, mid - 1);
        } else {
            return mid;
        }       
    }
}

import java.util.Arrays;

public class BinarySearchTest {

    public static void main(String[] args) {
        int[] arr = {-3, 10, 5, 24, 45.3, 10.5};
        Arrays.sort(arr);
        System.out.println(BinarySearch.search(arr, 2));
    }
}

错误是这样的:

9:错误:不兼容的类型:可能有损转换从double到int         int [] arr = { - 3,10,5,24,45.3,10.5};     

^

9:错误:不兼容的类型:可能有损转换从double到int         int [] arr = { - 3,10,5,24,45.3,10.5};

^

2个错误

2 个答案:

答案 0 :(得分:0)

该行

int[] arr = {-3, 10, 5, 24, 45.3, 10.5};

在main中创建一个双精度数组(例如,g,10.5)并且你正在转换为int []。如果你将类型改为double []那么一切都应该有效。这些是要改变的路线:

public static int search(int[] arr, int searchValue) {

private static int binarySearch(int[] arr, int searchValue, int left, int right) 

int[] arr = {-3, 10, 5, 24, 45.3, 10.5};

答案 1 :(得分:0)

你不能在int数组中存储双精度数(你可以将这些双精度值转换为int,但这样就失去了精度)。您可以更改代码,使其与double[]而不是int[]一起使用,然后一切都能正常运行。只需将int[]替换为double[],只需在代码中使用<DB> <Person><Name>Zack</Name> <PersonData>...</PersonData> </Person> <Person><Name>Dave</Name> <PersonData>...</PersonData> </Person> <Person><Name>Lisa</Name> <PersonData>...</PersonData> </Person> <Person><Name>Zack</Name> <PersonData>...</PersonData> </Person> </DB>