Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回Java中的值_Java_Methods_Types_Return_If Statement - Fatal编程技术网

返回Java中的值

返回Java中的值,java,methods,types,return,if-statement,Java,Methods,Types,Return,If Statement,如果在方法内部有一个if语句,根据结果返回不同的数据类型,如何编写一个返回原始数据类型值的方法 int minimum = 5; int students = 4; int studentGrades = 100; public double getAverage(){ if(students >= minimum){ return studentGrades / students; } else { System.out.prin

如果在方法内部有一个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;
    }
}

在您给出的示例中,您应该抛出一个异常-基本上,对象的状态对于方法调用无效。您可能希望为此使用IllegalStateException,或者选择其他类型的异常。该异常扩展了RuntimeException,因此它不是已检查的异常。这可能适合也可能不适合您的实际用例


另一方面,示例代码中的除法也不能满足您的要求—如果希望其中一个操作数执行浮点除法而不是整数除法,则应将其转换为双精度。

public Object getAverage


但是你应该检查返回类,你不能从同一个方法返回两个不同的原语类型。对于引用类型,您可以返回对象,这无论如何都不是一个好主意

您的return false看起来像一个错误条件,因此您可以考虑在此处引发异常:

public double getAverage(){
    if(students >= minimum){
        return studentGrades / students;
    }
    else {
       throw new IllegalStateException("not enough students");
    }
}

例如,您可以返回一个包含分数和成功标志的复合对象。
或者在上述版本中,您可以返回Double.NaN以指示失败。或者像其他人建议的那样,在失败的情况下抛出异常。

我不是Java专家,但我认为最好的做法是,如果学生人数少于要求的数量,就抛出异常。如果必须返回两个完全不同的值,我建议您将它们封装在自己的类中。

一个java方法只能有一个返回类型。所以你应该尝试其他方法来处理这种情况。正如上面其他人指出的,您可以抛出一个异常。或者,您可以使用可为null的数据类型,并在该特殊条件为true时返回null。但这很难看,不推荐使用。

对不起,我该怎么做?我还在学这门语言。如果我不学,那将是一个例外mistaken@enchance:Stack Overflow并不是学习语言的好地方-当你对某一方面不确定时,它是问特定问题的好地方。我强烈建议您购买一本好的Java书籍,并从中学习大部分内容。例外的话题太大了,无法在一个如此简单的答案中真正做到公正。我是说,我是。但是现在我知道了异常和InvalidStateException,所以谢谢。我可以从这里开始。返回a-1是我的想法,我只是想知道是否有一个更结构化的方式来做这件事。