Первое сравнение:
if (numbers[middle] == value)
следует , а не использовать оператор ==
. Помните, что вы сравниваете объекты String. Вам следует либо использовать метод equals
, либо compareTo
.
Следующее сравнение у вас есть:
// else if value is in lower half...
// needs array to be less then the string value?, without using equality regulators
else if (numbers[middle].compareTo(numbers[middle +1]) > 0)
Согласно вашим комментариям вы проверяете, находится ли value
в нижней половине массива, но ваш код сравнивает элемент массива со следующим элементом массива. Для соответствия комментариям это должно быть:
else if (value.compareTo(numbers[middle]) < 0)
Также обратите внимание, что при сравнении строк, представляющих числа, которые вы делаете, вы получите странные результаты. Метод compareTo
сравнивает строки лексикографически. Это означает, например, что «5» будет оцениваться как больше, чем «11».