Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单的二进制搜索程序…请告诉我这个特定代码有什么错误_Java_Search_Compiler Errors_Binary - Fatal编程技术网

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网上教程-我建议你搜索一个。