java函数可以打印正确的值,但不能返回它

juzqafwq  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(215)
ArrayList<Muchie> binarySearchLant(Punct p, int l, int r, ArrayList<ArrayList<Muchie>> lanturi) {
        int m = (l+r)/2;
        if (l < r) {
            Object[] lant = lanturi.get(m).toArray();
            Punct[] puncte = new Punct[lant.length+1];
            Muchie muchie = null;
            for (int i=0;i<lant.length;i++)
                puncte[i] = ((Muchie)(lant[i])).getPI();
            puncte[puncte.length-1] = ((Muchie)lant[lant.length-1]).getPS();
            int abs = Math.abs(Arrays.binarySearch(puncte, p));
            if (abs <= 1)
                muchie = (Muchie)lant[0];
            if (abs >= puncte.length)
                muchie = (Muchie)lant[lant.length - 1];
            if (abs > 1 && abs < puncte.length)
                muchie = (Muchie)lant[abs-2];
            System.out.println(lanturi.get(m));
            if (this.calcDet(muchie.getPI(), p, muchie.getPS()) > 0)
                this.binarySearchLant(p, m+1, r, lanturi);
            else
                this.binarySearchLant(p, l, m-1, lanturi);
        } else {
            return lanturi.get(m);
        }
        return null;
    }

这个函数基本上是一个适应的二进制搜索,但我的问题。我不认为解释代码是必要的,因为那不是我的问题。我的问题是如果我想回来 lanturi.get(m) 这个函数的返回值总是空的,但是如果我改为使二进制搜索函数变为空的话 return lanturi.get(m);System.out.println(lanturi.get(m)); 它打印的正是它应该打印的。我真不明白为什么。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题