Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.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_Recursion - Fatal编程技术网

Java 如何递归地实现矩形的二进制搜索?

Java 如何递归地实现矩形的二进制搜索?,java,recursion,Java,Recursion,我正在为矩形编写一个递归的二进制搜索方法。 我的班很好 这是: public class Rectangle implements Comparable<Rectangle> { private int length; private int width; private int perimeter; public Rectangle(int l, int w){ this.length = l; t

我正在为矩形编写一个递归的二进制搜索方法。 我的班很好 这是:

    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 ;
        }
}
公共类{
私有整数长度;
私有整数宽度;
私人内线;
公共矩形(整数l,整数w){
这个长度=l;
这个宽度=w;
} 
公共整数getLength(){
返回长度;
}
公共int getWidth(){
返回宽度;
}
公共无效设置长度(整数l){
长度=l;
}
公共无效设置宽度(整数w){
宽度=w;
}
公共int getpermiture(){
周长=2*(长度+宽度);
返回周长;
}
@凌驾
公共整数比较(矩形其他){
返回Double.compare(this.getpermiture(),other.getpermiture());
}
@凌驾
公共字符串toString(){
返回矩形:“+宽度+”乘以“+长度;
}
}
但问题在于我的binarySearch方法 在main方法中,我无法打印出实际的矩形。我不知道是方法本身错了,还是我在印刷品上写的方式错了

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]));

      }
}
导入java.util.array;
公共类问题2{
公共静电
int二进制搜索(AnyType[]a,AnyType x){
返回二进制搜索(a,x,0,a.length-1);
}
公共静态int二进制搜索
(任意类型[]a,任意类型x,整数开始,整数停止){
如果(启动<停止)
{
int mid=(停止+启动)/2;
如果(x.compareTo(a[mid])=-1)
返回二进制搜索(a、x、start、mid);
else如果(x.compareTo(a[mid])==1)
返回二进制搜索(a,x,mid+1,stop);
其他的
中途返回;
}
返回-1;
}
公共静态void main(字符串[]args){
矩形[]arr={新矩形(2,6),新矩形(4,7),新矩形(3,9),
新矩形(1,2),新矩形(2,4),新矩形(7,7)};
用于(矩形rec:arr){
System.out.println(“列表为“+rec”);
}
System.out.println(二进制搜索(arr,arr[5]);
}
}

因此,基本上,如果你运行这个,上面的部分工作得很好。最后的打印输出没有给我矩形。它打印出数字。比如,如果它是arr[1],那么它会打印1,但是如果它是5,那么它会给出-1。

您的
binarySearch
方法会返回找到矩形的数组中的索引,而不是矩形本身

你想要这样的东西:

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

是的,我意识到了!那么打印声明应该是这样的吗?System.out.println(binarySearch(arr,矩形(4,7));我对anytypex部分感到困惑