#java #arrays
#java #массивы
Вопрос:
Хорошо, итак, я получаю эту ошибку:
BinarySearch.java:26: error: incompatible types: double cannot be converted to Integer
Integer [] a = {-3,10,5,24,45.3,10.5};
^
BinarySearch.java:26: error: incompatible types: double cannot be converted to Integer
Integer [] a = {-3,10,5,24,45.3,10.5};
^
BinarySearch.java:27: error: incompatible types: possible lossy conversion from double to int
System.out.println("45.3 found at " binarySearch( a, 45.3 ));
^
Я понимаю, что это говорит мне, но я не знаю, как это исправить. Я везде искал исправление, но все остальное кажется не по теме. Любая помощь была бы отличной. Вот код, который у меня есть на данный момент:
public class BinarySearch
{
public static final int NOT_FOUND = -1;
public int binarySearch( Integer [] a, int x )
{
int low = 0;
int high = a.length - 1;
int mid;
while( low <= high )
{
mid = ( low high ) / 2;
if (a[mid].compareTo(x)<0)
low = mid 1;
else if (a[mid].compareTo(x) > 0)
high = mid - 1;
else
return mid;
}
return NOT_FOUND;
}
public static void main(String[] args)
{
int SIZE = 6;
Integer [] a = {-3,10,5,24,45.3,10.5};
System.out.println("45.3 found at " binarySearch( a, 45.3 ));
}
}
Комментарии:
1. Сообщение об ошибке очень конкретное:
double cannot be converted to Integer
. У вас есть массив, который, как вы говорите, содержит целые числа, но вы вводите числа с плавающей запятой в ot.2.Измените
10.5
на10
или11
и45.3
на45
или46
.int
— это не целое значение, а бит.3. @ElliottFrisch Мне не разрешено изменять числа, они должны оставаться как есть.
4. Затем измените
Integer
наDouble
.5. Вы должны убедиться, что вы также внесли все необходимые изменения в другом месте; например, в параметр метода.
Ответ №1:
Массив не упорядочен. Двоичный поиск работает, только если массив упорядочен.
Ответ №2:
Вы не можете хранить значения типа Double или Float (например, 10.5) внутри массива типа Integer —
Целое число [] a = {-3,10,5,24,45.3,10.5};
Оно должно быть объявлено как массив типа Double:
Double [] a = {-3, 10, 5, 24, 45.3, 10.5};
amp;
public int BinarySearch ( целое число [] a, int x )
Метод BinarySearch() должен быть способен принимать массив типа Double и значение того же типа, доступное для поиска:
public int binarySearch(Double[] a, double x)