繁体   English   中英

用Java返回值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM