2017-02-01 1 views
-2

私は、矩形に対して再帰的にbinarySearchメソッドを書いています。 マイRectangleクラスは、ここで 正常に動作し、それは次のようになります。矩形に対して再帰的にbinarySearchを実装する方法はありますか?

public class Rectangle implements Comparable<Rectangle> { 
    private int length; 
    private int width; 
     private int perimeter; 


    public Rectangle(int l, int w){ 
     this.length = l; 
     this.width = w; 
    } 

    public int getLength() { 
     return length; 
    } 

    public int getWidth(){ 
     return width; 
    } 

     public void setLength(int l){ 
      length= l; 
     } 
     public void setWidth(int w){ 
      width = w; 
     } 

    public int getPerimeter(){ 
       perimeter = 2*(length+width); 

       return perimeter; 
    } 




     @Override 
    public int compareTo(Rectangle other){ 
       return Double.compare(this.getPerimeter(), other.getPerimeter()); 
     } 

     @Override 
     public String toString(){ 
      return "Rectangle: "+ width +" by "+ length ; 
     } 
} 

が、問題は、私は、実際の四角形をプリントアウトできなかった主な方法で私のbinarySearch方法 です。方法自体が間違っているのか、それとも印刷物に書いているのか分かりません。

import java.util.Arrays; 

public class Problem2{ 

    public static <AnyType extends Comparable<AnyType>>  
    int binarySearch(AnyType[] a, AnyType x){ 
     return binarySearch(a, x, 0, a.length-1); 
    } 

    public static <AnyType extends Comparable<AnyType>> int binarySearch 
     (AnyType[] a, AnyType x, int start, int stop){ 
     if(start < stop) 
      { 
       int mid = (stop + start)/2; 
       if(x.compareTo(a[mid]) == -1) 
        return binarySearch(a, x, start, mid); 
       else if(x.compareTo(a[mid]) == 1) 
        return binarySearch(a, x, mid+1, stop); 
       else 
        return mid; 
      } 
     return -1; 
    } 

     public static void main(String []args){ 

      Rectangle[] arr = { new Rectangle(2,6), new Rectangle(4,7), new Rectangle(3,9), 
           new Rectangle(1,2), new Rectangle(2,4), new Rectangle(7,7)}; 


      for(Rectangle rec: arr){ 
      System.out.println("the list is " + rec); 
      } 

      System.out.println(binarySearch(arr,arr[5])); 

     } 
} 

これを実行すると、上記の部分が正常に動作します。最後のプリントアウトは私に長方形を与えません。それは数字を表示します。 arr [1]の場合と同様に1を出力しますが、5の場合は-1を出力します。

答えて

0

binarySearchメソッドは、インデックスを、矩形自体ではなく、矩形が見つかった配列に返します。

あなたはこのような何かしたい:私は実現

int index = binarySearch(arr,arr[5]); 
if (index != -1) 
    System.out.println(arr[index]); 
else 
    System.out.println("Rectangle not found"); 
+0

はいを​​! print文はこのようにsthでなければなりませんか? System.out.println(binarySearch(arr、Rectangle(4,7));私はAnytype xの部分について混乱しています – Kat

関連する問題