返回什么作为空堆的最小元素

时间:2015-04-21 04:14:19

标签: java primitive

我写了这个简单的代码来检查二进制堆是否为空的天气。我有返回的问题。它不能是:nullvoid或什么都不是;它应该返回 某事 ,但我不知道是什么。那么,如果我想保持这段代码的简单,我应该把它放在那里? (我的意思是不使用Integer类或java.lang.Integer)。

public int getMinimum() {    
  if (isEmpty()) {
    System.out.println("Heap is empty"); 
    return;           
  } else
    return data[0];
}

4 个答案:

答案 0 :(得分:2)

抛出无效值的异常并在调用

时处理它
public int getMinimum() throws Exception {
  if (isEmpty())
      throw new Exception("Heap is Empty");
  else
      return data[0];
}

并且在获得最低时

 try{
    int i = getMinimum();
    System.out.println("Minimum is :" + i);
 }catch(Exception e){
    System.out.println(e.getMessage());
 }

答案 1 :(得分:1)

我只能帮助消除... java不是魔法。如果声明函数返回" int",则编译器将返回int。 这留下了有限的选择:

1)抛出异常,并教导您的用户将其与' isEmpty()'结合使用,例如: if(theHeap.isEmpty())System.out.println(" empty"); else System.out.println(theHeap.getMinimum())

2)使用你不喜欢的整数(由于性能原因我猜?)

3)找到一些不太可能存在于数据中的int值,例如也许你不希望你的堆永远保持Integer.MIN_VALUE 如果您的堆包含双打,我建议使用NaN。

这是Java语法中的所有功能,抱歉它不是地面制动...

答案 2 :(得分:1)

int 是一个原语,因此需要有一个值。 如果你真的想像这样解决它,你需要指定一个永远不会出现在堆中的某个int值。当堆为空时,您也可以尝试抛出异常。

答案 3 :(得分:0)

我们可以简单地声明它是“ 整数 ”而不是“ int ”,所以我们可以返回“ null ”,以及。

public Integer getMinimum(){    
  if(isEmpty())
    return null;           
  else
    return data[0];
}