我通过指向十进制整数的小箭头得到此错误。是否允许小数?为了使小数可以接受,我需要写什么?这是我的代码:
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个错误
答案 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>
。