【问题标题】:Using loops to return in a method在方法中使用循环返回
【发布时间】:2014-11-12 23:20:33
【问题描述】:

所以,我需要returnarray 中的一个位置,如果没有找到目标编号,我需要一个-1。问题是当我在 if else 语句中使用 return 时,我收到一个错误,因为程序不会进入 if 循环。这是我当前的代码:

public int search(int num1)
{
for(int i=0;i<scores.length;i++)
    {
        if(scores[i]==num1)
        {
            return i;
        }
        else
        {
            return -1;
        }

    }
}

这一直给我一个错误,说没有返回语句。有没有办法在没有错误的情况下执行此逻辑? 谢谢大家

【问题讨论】:

  • 删除else 块。将return -1; 放在for 块的末尾之后。
  • 想想你的代码做了什么。它检查元素 0,无论如何,立即返回。这可能不是你想要的。编译器正在查看您的代码并运行“好吧,如果 scores.length 为零,则绕过 for 循环。所以...... for 循环之后的 return 语句在哪里?”
  • 仅供参考,错误的原因是如果scores.length 为0,则循环永远不会执行并且方法永远不会返回。 (实际上,Java 编译器似乎假定带有终止条件的 any for 循环可以执行零次。)

标签: java loops methods


【解决方案1】:

如果没有进入for循环,则没有return语句。如果scores.length0,就会发生这种情况。您必须在所有执行情况下提供return 语句,否则编译器将捕获没有return 语句的情况并给出编译器错误。

return -1 移到for 循环之后,这样只有在遍历整个循环但没有找到num1 时才返回-1。这也意味着else 块是不必要的——删除它。

【讨论】:

  • 解决了!非常感谢@rgettman,我知道如果需要,让它忽略我的 for 循环很简单。完全解决了谢谢!
【解决方案2】:

它给你错误,因为它可能认为循环可能没有被执行。为了让它运行,它必须是循环外的 return 语句或 if 语句。

这是我对您的代码所做的调整。

    public int search(int num1) {
        int x = -1;
        for(int i = 0; i < scores.length; i++) {
            if(scores[i]==num1) {
                x = i;
            }
        }
        return x;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-27
    • 2023-03-19
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 2013-11-06
    相关资源
    最近更新 更多