Java 如何获得返回类型双?
我创建了一个应该返回double类型的方法,下面是我的代码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
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页)中这样说。