Java 在数组中搜索给定的数字
编写一个程序,创建一个1000个随机数的数组,范围为1–5000。然后向用户请求一个 值介于和5000之间,并搜索数组,直到找到该值或确定该值为 不在数组中。打印一条消息,指示是否找到该值,以及需要输入多少个数字 在找到值(或确定它不在那里)之前必须查看 出于某种原因,无论我的输入是什么,我总是得到“找不到值”。我不知道我做错了什么。如有任何建议,将不胜感激。先谢谢你Java 在数组中搜索给定的数字,java,arrays,Java,Arrays,编写一个程序,创建一个1000个随机数的数组,范围为1–5000。然后向用户请求一个 值介于和5000之间,并搜索数组,直到找到该值或确定该值为 不在数组中。打印一条消息,指示是否找到该值,以及需要输入多少个数字 在找到值(或确定它不在那里)之前必须查看 出于某种原因,无论我的输入是什么,我总是得到“找不到值”。我不知道我做错了什么。如有任何建议,将不胜感激。先谢谢你 import java.util.*; public class Array { int y = 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!");
}
}
import java.util.*;
公共类数组
{
int y=5000;
int x;
整数值[]=新整数值[1000];
数组()
{
随机rg=新随机();
对于(int x=0;x值[(r+s)/2])
s=(r+s)/2+1;
其他的
r=(r+s)/2-1;
如果(s>r)
返回-1;
}
}
公共静态void main(字符串[]args)
{
数组fN=新数组();
扫描仪kb=新扫描仪(System.in);
System.out.println(“输入1到5000之间的整数”);
int a=kb.nextInt();
如果(fN.findNumber(a)>0)
System.out.println(“在”+fN.findNumber(a)+“tries”中找到);
其他的
System.out.println(“未找到值!”);
}
}
这不会帮助您进行全面调试,只是给您一些提示:
首先,可能与您的问题关系不大,但仍然值得一看:通过rg.nextInt(y+1)
生成的结果将随机从0到5001,我相信您需要rg.nextInt(y)+1
在修复了之前的小问题后,我尝试了你的代码。这对我有用。我看没什么问题。然而,我怀疑的是,因为您生成了1000个可能重复的随机数,如果您只需输入任何数字进行搜索,它可能不会落入您生成的1000个数字中。我已经更新了您的代码,以便您可以查看生成的内容,并使用其中一个结果作为搜索输入。它应该在以下方面发挥作用:
Random rg = new Random();
for (int x=0;x<values.length;x++) {
int r = rg.nextInt(y) + 1;
System.out.println("Random number: " + r);
values[x]=r;
}
Arrays.sort(values);
Random rg=new Random();
对于(int x=0;x),请阅读以下内容: