我写了这个简单的代码来检查二进制堆是否为空的天气。我有返回的问题。它不能是:null
,void
或什么都不是;它应该返回 某事 ,但我不知道是什么。那么,如果我想保持这段代码的简单,我应该把它放在那里? (我的意思是不使用Integer
类或java.lang.Integer
)。
public int getMinimum() {
if (isEmpty()) {
System.out.println("Heap is empty");
return;
} else
return data[0];
}
答案 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];
}