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