是否可以使用java在if块中编写return语句?
我想根据if块返回向量,但代码给出了以下错误:是否可以使用java在if块中编写return语句?,java,arrays,if-statement,Java,Arrays,If Statement,我想根据if块返回向量,但代码给出了以下错误:addreturnstatement 是否可以在if块中写入return语句 public static int[] zeroVectorBinning1( ImageFloat32 angle,ImageFloat32 Magnitude ) { for (int NumberOFChanks=0;NumberOFChanks<locations_original.size();NumberOFChanks++) {
addreturnstatement
是否可以在if块中写入return语句
public static int[] zeroVectorBinning1( ImageFloat32 angle,ImageFloat32 Magnitude )
{
for (int NumberOFChanks=0;NumberOFChanks<locations_original.size();NumberOFChanks++)
{
for(int i=0;i<angle.getHeight();i++)
for(int j=0;j<angle.getWidth();j++)
{
int orientaionVal=(int) angle.get(j, i);
if(orientaionVal<=0)
{int magnitudeVal=(int) Magnitude.get(j, i);
int[] Vector = new int[19];
Vector=zeroVector(19);
Vector[0]=magnitudeVal;
return Vector;
}
else if(orientaionVal<=20)
{int magnitudeVal=(int) Magnitude.get(j, i);
int[] Vector = new int[19];
Vector=zeroVector(19);
Vector[1]=magnitudeVal;
return Vector;
}
else(orientaionVal >= 0 && orientaionVal <=20)
{
int magnitudeVal=(int) Magnitude.get(j, i);
int[] Vector = new int[19];
Vector=zeroVector(19);
Vector[0]=magnitudeVal;
Vector[1]=magnitudeVal;
return Vector;
}
}
}
}
public static int[]零向量bining1(ImageFloat32角度,ImageFloat32幅度)
{
对于(int NumberOFChanks=0;NumberOFChanksYes
但是函数最终仍然不会返回任何内容,因此必须返回一些内容,即使null
因此,当您调用此函数时,它应该如下所示:
int[] fuctionResult = zeroVectorBinning1(....);
if (fuctionResult != null){
....
}
在if
块中使用return语句并没有什么错,但您的方法必须在任何执行路径中都有return语句
可能永远不会执行for循环(例如,如果locations\u original.size()
为0),在这种情况下,将不会到达包含返回语句的if块。因此,必须在循环之后添加一个返回语句。这是可能的。但是,对于每种情况,都需要一个返回语句。此外,如果从未执行for循环,也不例外
因此,在方法末尾添加return null
。您可以通过两种方式解决此问题:
- 最后,在完成方法之前抛出异常
- 或者在最后只返回null
编译器抱怨的原因是,iflocations\u original.size()
返回0,则此方法将永远不会返回与您在方法中所说的内容相矛盾的任何内容,即它将返回一个int数组。问题在于您的如果/else如果/else分析未完成,那么else
在以下条件下会发生什么:
else(orientaionVal >= 0 && orientaionVal <=20)
正确:
if(condition){
return;
}
return;
if(condition){
return;
}else if(anotherCondition){
return;
}else{
return;
}
错:
if(condition){
return;
}
// no return ...
if(condition){
return;
}else if(anotherCodition){
return;
}
// no return ...
错:
if(condition){
return;
}
// no return ...
if(condition){
return;
}else if(anotherCodition){
return;
}
// no return ...
是的,这是可能的。请按照代码段进行解释
public class TestSample {
public static void main(String... w){
int h = new TestSample().call();
System.out.println(h);
}
public int call(){
int j =0;
for(int i=0;i<10;i++){
if(i==5){
return i;
}
}
return j;
}
}
公共类TestSample{
公共静态无效主(字符串…w){
int h=newtestsample().call();
系统输出打印ln(h);
}
公共int调用(){
int j=0;
对于(int i=0;i
在本例中,结尾处有一个“else”,因此每个案例都包含在内。但是如果您离开else
public int getValue(){
final int value = 3;
if(value==1){
return 1;
}
else if(value==2){
return 2;
}
else if(value==3){
return 3;
}
return -1;
// ... you have to return something at the end of the method, because value could be >3 or < 1 and the code under the last else if will be executed
}
public int getValue(){
最终整数值=3;
如果(值==1){
返回1;
}
else if(值==2){
返回2;
}
else if(值==3){
返回3;
}
返回-1;
//…您必须在方法的末尾返回一些内容,因为值可能大于3或小于1,最后一个else if下的代码将被执行
}
是。也可以为变量指定除Vector以外的其他名称。这是可能的,但您尚未涵盖程序流可能涉及的所有可能情况。请将Vector重命名为其他名称。Vector是java@MukulGoel:它不是Java中的关键字。请在else之后删除Paranthesize语句。