如何获得返回类型double?

时间:2013-02-14 12:22:47

标签: 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  ) / 2 ;
        System.out.println("Average is: "+result);
    }
}

我将void更改为double并且在system.out之后.....行我添加了返回结果但是这给出了错误!!你能告诉我我怎样才能改变这个方法,以便获得双重的返回类型?

5 个答案:

答案 0 :(得分:4)

如果将方法的类型更改为double,则每个分支都必须提供double作为返回值。因此,您的错误是因为只有在输入“if”时才会有一个double作为返回,但如果没有,则不会!

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;
}

这应该有效

答案 1 :(得分:1)

我认为你的重播是在if条件下。所以方法担心如果条件不正确会发生什么。你也需要处理它。

答案 2 :(得分:1)

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;
}

答案 3 :(得分:0)

您缺少该方法的返回类型。方法必须返回方法类型的值。如果方法声明为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;
}

答案 4 :(得分:0)

总而言之,以前的所有答案都是正确的,但是缺少一些细节,比如@ 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; 

}