当前位置: 首页 > 知识库问答 >
问题:

我一直得到这个错误:错误:不兼容类型:从double到int的转换可能有损

廉宇
2023-03-14

我得到这个错误的一个小箭头指向十进制整数。允许小数吗?我要写些什么才能让小数被接受?这是我的代码:

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));
    }
}

共有1个答案

邹京
2023-03-14

这条线

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

在main中创建了一个double数组(例如,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};
 类似资料: