Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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_Double_Return Value - Fatal编程技术网

Java 如何获得返回类型双?

Java 如何获得返回类型双?,java,double,return-value,Java,Double,Return Value,我创建了一个应该返回double类型的方法,下面是我的代码 private void myMethod() { if(myArrayList.size() >= 2) { Double t = myArrayList.get(myArrayList.size()-1); Double d = myArrayList.get(myArrayList.size()-2); Double result = ( t+ d

我创建了一个应该返回double类型的方法,下面是我的代码

private void myMethod()  
{ 
    if(myArrayList.size() >= 2) 
    {
        Double  t = myArrayList.get(myArrayList.size()-1);
        Double  d = myArrayList.get(myArrayList.size()-2); 
        Double result = ( t+ d  ) / 2 ;
        System.out.println("Average is: "+result);
    }
}

我将空值改为双倍,并在系统结束后立即执行。。。。。行我添加了返回结果,但这给出了一个错误!!您能告诉我如何准确地更改此方法,以便获得双精度的返回类型吗?

如果您将方法的类型更改为双精度,则每个分支都必须给出双精度作为返回。因此,您的错误是因为只有在输入“if”时,才会有double as return,而不是if not

private Double myMethod()  
{ 
    Double result = 0; // has to be initialised ...
    if(myArrayList.size() >= 2) 
    {
        Double  t = myArrayList.get(myArrayList.size()-1);
        Double  d = myArrayList.get(myArrayList.size()-2); 
        result = ( t+ d  ) / 2 ;
        System.out.println("Average is: "+result);
    }
    return result;
}

这应该可以工作

您缺少该方法的返回类型。方法必须返回方法类型的值。若方法被声明为void,则表示该方法不返回任何值

private double myMethod()  
{ 
double result =0;
if(myArrayList.size() >= 2) 
{
    double  t = myArrayList.get(myArrayList.size()-1);
    double  d = myArrayList.get(myArrayList.size()-2); 
    result = ( t+ d  ) / 2 ;
    System.out.println("Average is: "+result);
}
return result;
}

我认为你的重新运行在if条件内。所以,该方法担心当条件不成立时会发生什么。你也需要处理这个问题。

总而言之,前面的答案都是正确的,但缺少一些小细节,如@dinesh707所说,你必须能够返回每个方法分支(除非发生异常)。还要确保在decision/if块之外声明结果变量,并声明该方法返回double,并且应该使用double原语,而不是装箱版本

private double myMethod()  
{   
    double result=0;
    if(myArrayList.size() >= 2) 
    {
        Double  t = myArrayList.get(myArrayList.size()-1);
        Double  d = myArrayList.get(myArrayList.size()-2); 
        result = ( t+ d  ) / 2 ;
        System.out.println("Average is: "+result);
    }
    return result;
}
因此,代码如下所示:

private double myMethod() { 
double result=0; 
if(myArrayList.size() >= 2) { 
    double t = myArrayList.get(myArrayList.size()-1); 
    double d = myArrayList.get(myArrayList.size()-2); 
    result = ( t+ d ) / 2 ; 
    System.out.println("Average is: "+result); 
} 
return result; 

}

您可以发布您的方法吗?尝试将返回值移到
IF
语句之外,或从
ELSE
语句返回一些值,因此此代码的某些变化会触发未公开的错误消息。。。信息太多了
result
在返回时超出范围。很好,但请确保将结果声明放在决策块之外。更好,但请确保相应地声明返回类型。为什么建议的double原语而不是double对象?@Arno Saxena好吧,这是一件非常简单的事情,原语比其装箱的计数器部件轻得多,而且在Java1.5之前没有自动取消装箱,因此您永远无法确定您的取消装箱将始终执行。Josh Bloch在他的书《有效Java第二版》(atem 49,第221页)中这样说。