当前位置: 首页 > 面试题库 >

返回for循环或外循环

江向阳
2023-03-14
问题内容

今天,有人陪我一起滥用returnJava
中的关键字。我编写了一个简单的for循环来验证数组中是否存在某些内容。假设array是一个length数组n,这是我的代码:

for (int i = 0; i < array.length; ++i) {
    if (array[i] == valueToFind) {
        return true;
    }
}
return false;

现在有人告诉我这不是一个很好的编程,因为我return在循环内使用了该语句,这将导致垃圾回收发生故障。因此,更好的代码将是:

int i = 0;
while (i < array.length && array[i] != valueToFind) {
    ++i;
}
return i != array.length;

问题是我无法正确解释为什么第一个for循环不是一个好习惯。有人可以给我一个解释吗?


问题答案:

现在有人告诉我这不是一个很好的编程,因为我在循环内使用return语句,这将导致垃圾回收发生故障。

这是不正确的,建议您应该对该人的其他建议持怀疑态度。

在只需要自己管理所有资源的语言中,“仅具有一个return语句”(或更笼统地说,只有一个退出点)的口号 重要-
这样可以确保将所有清理代码放在一个位置。

它在Java中的用处不大:只要知道应该返回(以及返回值应该是什么),就返回即可。这样一来,阅读起来就更简单了-
您无需采取任何其他方法即可确定将要发生的其他事情(除了finally块)。



 类似资料:
  • 我有一个嵌套的for循环,但是它会减慢一点处理速度,我如何才能使嵌套循环高效。我需要的是对于外循环的每个值,内循环继续其所有迭代。但是,我不认为它会像两个嵌套循环那样影响计算。我的第二个问题是,循环会影响速度还是会支持我的现象? 我的代码:

  • loop 有个用途是尝试一个操作直到成功为止。若操作返回一个值,则可能需要将其传递给代码的其余部分:将该值放在 break 之后,并由 loop 表达式返回。 fn main() { let mut counter = 0; let result = loop { counter += 1; if counter == 10 {

  • 我有一个二维布尔数组“poorSignal”,需要编写一个返回网格的方法,如果数组上的一个点为真,则显示X,如果为假,则显示O。这是我的代码: 当我编译时,它在方法的最后一行给出了“missing return statement”。我也不确定“return”\n在打印阵列时是否可以添加新行。 这是一个赋值问题,所以我不能直接打印它,也不能只打印布尔值——它必须是一个生成网格的方法。

  • 我可以找到类似的问题,但我找不到我对这个特定案例期望的答案。 当我执行这段代码时,我得到一个编译错误,上面写着“缺少返回语句”。但是,据我所知,很明显,for循环中的代码将毫无疑问地执行,因为第一次,x=0。因此,对于这种特殊情况,没有理由不在for循环中执行代码。那么,为什么我们还需要在for循环之外声明一个额外的return语句呢?。

  • 为了澄清所使用的输入是100,用于投资金额,利率为5%(在该程序中,取5/100,然后/12=0.00417),在这种情况下,投资的持续时间为6个月。因此,在任何利息累积之前的第0个月,没有利息,所以这只是投资的投入金额(100)。然后,在第一个月,它现在运行正常((100*i)*(i interest());或在或情况下((100*1)*(10.00417))=100.417 但当我到了第二个月

  • 我试图在for循环中获得for循环,因此输出如下: 我希望输出显示一个正方形 我不知道它为什么不这样做。下面是我的代码: