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

juzqafwq  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(245)
  1. ArrayList<Muchie> binarySearchLant(Punct p, int l, int r, ArrayList<ArrayList<Muchie>> lanturi) {
  2. int m = (l+r)/2;
  3. if (l < r) {
  4. Object[] lant = lanturi.get(m).toArray();
  5. Punct[] puncte = new Punct[lant.length+1];
  6. Muchie muchie = null;
  7. for (int i=0;i<lant.length;i++)
  8. puncte[i] = ((Muchie)(lant[i])).getPI();
  9. puncte[puncte.length-1] = ((Muchie)lant[lant.length-1]).getPS();
  10. int abs = Math.abs(Arrays.binarySearch(puncte, p));
  11. if (abs <= 1)
  12. muchie = (Muchie)lant[0];
  13. if (abs >= puncte.length)
  14. muchie = (Muchie)lant[lant.length - 1];
  15. if (abs > 1 && abs < puncte.length)
  16. muchie = (Muchie)lant[abs-2];
  17. System.out.println(lanturi.get(m));
  18. if (this.calcDet(muchie.getPI(), p, muchie.getPS()) > 0)
  19. this.binarySearchLant(p, m+1, r, lanturi);
  20. else
  21. this.binarySearchLant(p, l, m-1, lanturi);
  22. } else {
  23. return lanturi.get(m);
  24. }
  25. return null;
  26. }

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

暂无答案!

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

相关问题