我创建了一个应该返回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之后.....行我添加了返回结果但是这给出了错误!!你能告诉我我怎样才能改变这个方法,以便获得双重的返回类型?
答案 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;
}