2

我创建了一个应该返回 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 ..... 行之后我添加了返回结果,但这给出了一个错误!您能否告诉我如何更改此方法以获得双精度返回类型?

4

5 回答 5

4

如果将方法的类型更改为双精度,则每个分支都必须返回双精度值。因此,您的错误是因为仅当输入“if”时才会有双倍的返回,但如果没有,则不会!

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

这应该工作

于 2013-02-14T12:25:30.627 回答
1

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

于 2013-02-14T12:25:58.240 回答
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;
}
于 2013-02-14T12:26:23.563 回答
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;
}
于 2013-02-14T12:25:48.987 回答
0

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

所以代码看起来像:

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; 

}

于 2013-02-14T12:33:17.143 回答