陣列編寫範圍內創建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/ – 2014-12-02 00:40:59