开发者

Binary Search - display results

    public void Find() {

    String Value = "";
    System.out.println("Search Name");
            Value = Input.next();

    int Begin, End, Pivot;

    Begin = 0;
    End = CurrentCount;

    while(End - Begin > 1 ) {
        Pivot = Begin + (End - Begin)/2;

        if(Value.equals(ArrayList[Pivot].LastNamePlayer))
         System.out.println(ArrayList[Pivot].NamePerson);

        else if(Value.compareTo(ArrayList[Pivot].LastNamePlayer) < 0)
            End = Pivot;
        else
            Begin = Pivot;
        }
       if (Value.equals(ArrayList[Begin].LastNamePlayer))
            System.out.println(ArrayList[Begin].NamePerson );
           else if(Value.equals(ArrayList[End].LastNamePlayer))
             System.out.println(ArrayList[End].NamePerson);
           else
          System.out.println("Not Found!");
 开发者_如何学运维   }

It looks like this will locate the proper record in the array. The problem is that it goes into an infinite loop printing out the result. What is the best way to display the result?


You need to break when you find the match:

if(Value.equals(ArrayList[Pivot].LastNamePlayer))
{
    System.out.println(ArrayList[Pivot].NamePerson);
    break;
}


Add a return; to the end of your if found and to the end of your else statement. It will terminate the while loop and end the function.

if (Value.equals(ArrayList[Begin].LastNamePlayer)){
    System.out.println(ArrayList[Begin].NamePerson );
    return;
}
else if(Value.equals(ArrayList[End].LastNamePlayer))
    System.out.println(ArrayList[End].NamePerson);
    return;
else
    System.out.println("Not Found!");
    return;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜