[英]Returning a value in Java
当方法内部有一个if语句根据结果返回不同的数据类型时,如何编写返回原始数据类型值的方法?
int minimum = 5;
int students = 4;
int studentGrades = 100;
public double getAverage(){
if(students >= minimum){
return studentGrades / students;
}
else {
System.out.println(null, "Sorry, you don't have enough students.");
return false;
}
}
您实际上不能从同一方法返回两种不同的原始类型。 使用引用类型,您可以返回Object
,但这不是一个好主意。
您的return false
看起来像是一个错误条件,因此您可以考虑在此处引发异常:
public double getAverage(){
if(students >= minimum){
return studentGrades / students;
}
else {
throw new IllegalStateException("not enough students");
}
}
在给出的示例中,应该抛出异常-基本上,对象的状态对于方法调用无效。 您可能要为此使用IllegalStateException
,或选择其他类型的异常。 (该异常扩展了RuntimeException
,因此它不是一个已检查的异常。这可能会或可能不适合您的实际用例。)
(顺便说一句,示例代码中的除法也不会执行您想要的任何操作-如果希望操作数执行浮点除法而不是整数除法,则应将其中一个操作数强制转换为double
精度。)
公共对象getAverage()
但是然后您应该检查返回类
例如,您可以返回包含分数和成功标志的复合对象。 或者在上述版本中,您可以返回Double.NaN
来指示失败。 或者像其他人建议的那样,在失败的情况下抛出Exception。
我不是Java专家,但我认为这里的一个好习惯是,如果学生人数少于要求的人数,则抛出异常。 如果必须返回2个完全不同的值,建议您将它们封装在自己的类中。
一个Java方法只能有一个返回类型。 因此,您应该尝试其他方法来处理这种情况。 正如以上其他人指出的那样,您可能会抛出异常。 或者,您可以使用可为空的数据类型,并在此特殊条件为true时返回null。 但这是丑陋的,不建议这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.