【问题标题】:How do I solve this missing return statement error?如何解决这个缺少返回语句的错误?
【发布时间】:2020-06-28 16:46:42
【问题描述】:

我在使用退货声明时遇到了问题。如果用户输入的详细信息与公寓对象匹配,我已经在返回 int 值的方法中有 2。

我的问题是,为什么我已经有 2 个时仍然收到缺少返回语句错误。我知道已经有人问过类似的问题,但我真的不明白它是如何工作的。

public static int search(){
    int none = 55;
    Scanner user = new Scanner(System.in);
    System.out.println("Enter a bedroom number ");
    int bedroom = user.nextInt();
    System.out.println("Enter a bathroom number ");
    int bathroom = user.nextInt();
    System.out.println("Enter your rental budget");
    int rentalAmount = user.nextInt();
    
    for( int x = 0; x < object.length;++x){
        if(object[x].getNumBathrooms() == bathroom && object[x].getNumBedrooms() == bedroom  
                && (object[x].getRentalAmount() <= rentalAmount)){
                                 return x;
        }else{
            return none;           
        }
    }
}

【问题讨论】:

  • 您应该从缩进代码开始。
  • 在for循环之后添加一个return。如果 for 循环运行零次,您需要指定返回的内容。
  • for 循环可能永远不会运行...因此,您的两个 return 语句都可能不会被命中。您还需要在函数底部添加return 语句。另一种解决方法是在循环内设置一个变量为返回值,然后切换一个标志以退出循环,最后在返回值的函数底部只有一个返回。
  • 为什么会有最终的for循环?它只会在返回之前循环一次(当 x 为 0 时,它将返回 if 语句或 else 语句)。它应该只替换为一个 if 语句。

标签: java return


【解决方案1】:

for 循环内,消除else 分支。然后将return none; 语句放在for 循环结束之后。

for (int x = 0; x < object.length; ++x) {
    if (object[x].getNumBathrooms() == bathroom &&
        object[x].getNumBedrooms() == bedroom &&
        object[x].getRentalAmount() <= rentalAmount)
    {
        return x;
    }
}
return none;           

【讨论】:

    猜你喜欢
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2013-03-21
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    相关资源
    最近更新 更多