Напишите программу, которая создает массив из 1000 случайных чисел в диапазоне от 1 до 5000. Затем спросите пользователя о значении между и 5000 и найдите массив до тех пор, пока вы не найдете значение или что значение равно не в массиве. Распечатайте сообщение, указывающее, было ли найдено значение, и сколько номеров вам необходимо было найти, прежде чем вы нашли значение (или определили, что его там не было).Поиск массива для заданного числа
По какой-то причине я продолжаю получать «Значение не найдено», независимо от моего ввода. Я не могу понять, что я сделал неправильно. Любые советы будут очень признательны. Заранее спасибо.
import java.util.*;
public class Array
{
int y = 5000;
int x;
int values[] = new int[1000];
Array()
{
Random rg = new Random();
for (int x=0;x<values.length;x++)
values[x]=rg.nextInt(y+1);
Arrays.sort(values);
}
public int findNumber(int val)
{
int s=0, r = values.length;
int x=0;
while(true)
{
x++;
if (values[(r+s)/2]==val)
return x;
else if (val > values[(r+s)/2])
s = (r+s)/2 + 1;
else
r = (r+s)/2 - 1;
if (s>r)
return -1;
}
}
public static void main(String[] args)
{
Array fN = new Array();
Scanner kb = new Scanner(System.in);
System.out.println("Enter whole between 1 and 5000.");
int a = kb.nextInt();
if (fN.findNumber(a)>0)
System.out.println("Found in " + fN.findNumber(a) + " tries.");
else
System.out.println("Value not found!");
}
}
Прочтите это: http://ericlippert.com/2014/03/05/how-to-debug-small-programs/ –