Java 简单的二进制搜索程序…请告诉我这个特定代码有什么错误
我是初学者。 这是一个二进制搜索代码。它显示了主方法的数组越界错误。 请看一下这个节目,并告诉我我的错误。我将感谢你的服务。 我必须写这些废话,因为我不能发布它,因为它要求更多的细节Java 简单的二进制搜索程序…请告诉我这个特定代码有什么错误,java,search,compiler-errors,binary,Java,Search,Compiler Errors,Binary,我是初学者。 这是一个二进制搜索代码。它显示了主方法的数组越界错误。 请看一下这个节目,并告诉我我的错误。我将感谢你的服务。 我必须写这些废话,因为我不能发布它,因为它要求更多的细节 public class BinaryS { int n; public BinaryS(int z) { n=z; } static int pos; static boolean flag=false; public void disp()
public class BinaryS
{
int n;
public BinaryS(int z)
{
n=z;
}
static int pos;
static boolean flag=false;
public void disp()
{
int arr[]={0,1,2,3,4};
int len=arr.length;
int first=0;
int last=len;
int mid=(int)(first+last/2);
//boolean flag=false;
while(mid>=0 && mid<=len)
{
if(n<arr[mid])
{
last=mid;
}
if(n>arr[mid])
{
first=mid;
}
if(n==arr[mid])
{
flag=true;
pos=mid+1;
}
}
if(flag==true){
System.out.println("the no."+n+"is found at"+pos);
}
else{
System.out.println("the no."+n+"is not found ");
}
}
public static void main(String args[])
{
BinaryS obj=new BinaryS(2);
obj.disp();
}
}
公共类二进制文件
{
int n;
公共二进制(intz)
{
n=z;
}
静态int-pos;
静态布尔标志=false;
公共无效disp()
{
int arr[]={0,1,2,3,4};
int len=arr.length;
int first=0;
int last=len;
int mid=(int)(第一个+最后一个/2);
//布尔标志=假;
而(mid>=0&&mid当前,您的代码会编译并永远运行-由于此循环:
while(mid>=0 && mid<=len)
{
// Code which doesn't modify mid or len
}
while(mid>=0&&mid要解决的第一件事:缩进。缩进现在到处都是。正确地缩进,我们所有人(包括你自己)都会更容易阅读。接下来,更清楚地描述问题,以及你为诊断问题所做的努力。(你说它不编译,但它一直在运行,这在我看来似乎是矛盾的……你需要非常精确地描述你所看到的。)编译错误应该很容易修复。它会告诉您出错的类名和行号。我的建议是清除编译错误,并在出现运行时问题时返回。编辑后添加--而(mid>=0&&mid问题是您不了解二进制搜索算法:@anurag1018:现在是学习使用调试器的好时机,了解您的代码在做什么。我很乐意这样做。如果您能指导我如何在eclipse中使用它,我将不胜感激。@anurag1018:不,这不是真正的工作方式。有大量的调试器g网上教程-我建议你搜索一个。