【问题标题】:How to perform iteration in java?如何在java中执行迭代?
【发布时间】:2014-03-15 18:54:21
【问题描述】:

我不知道如何迭代我的 for 循环。 我已经在 V[i] 中有一些值(假设 V[i] 为双精度)。 现在 V[i] 由下面的 for 循环更新。 我想同时减去old V[i]new V[i] 并检查它是否是greater than 0.00005。 一旦这个条件失败,for循环,即迭代,必须终止。 需要注意的重要一点是,在检查该条件时,必须对所有 V (0,1,2...n) 值进行检查,然后必须执行循环。 我希望我的问题很清楚。如果不是,请告诉我。我会详细说明。

for(int i=0;i<n;i++)
{
  if("some_statement")
      {
        //find V[i]
      }
  else if("some_statement")
      {
        //find V[i]
      }
}

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 是否意味着,如果对于某些i Vnew[i] - Vold[i]
  • @guitar_freak for 循环执行前 v 有一些价值。假设 v 为 VOLD。for 循环后 v 被更新。让你说这个为 VNEW。如果 VOLD-VNEW
  • @gkn06 都说,你应该在发布之前正确格式化你的代码
  • 你知道breakcontinue吗?

标签: java arrays loops


【解决方案1】:

你可以使用

if( (Your value)>0.005 ) {

break;

}

Break 将终止您的 for 循环,尝试阅读有关 break 的更多信息,当它在任何循环中遇到时,它只会中断或停止该外观的执行

【讨论】:

    【解决方案2】:
    for(int i=0; i<n; ++i){
       if(v_old[i] - v_new[i] <= 0.0005) {
             break;
       }
    }
    

    你在找那个吗?

    【讨论】:

      【解决方案3】:

      使用临时变量存储旧的 V[i]

      //a temp var to store found V[i] Values
      Double old_Vi;
      
      for(int i=0;i<n;i++)
      {
        if("some_statement")
            { 
              //find V[i]
              //now compare
              if(old_Vi !=null && (V[i]-old_Vi)<0.00005)
              break;
              
              //store new V[i] as old Vi
              old_Vi=V[i];
            }
        else if("some_statement")
            {
      
              //find V[i]
              //now compare
              if(old_Vi !=null && (V[i]-old_Vi)<0.00005)
              break;
      
              //store new V[i] as old Vi
              old_Vi=V[i];
            }
      }
      

      【讨论】:

      • 必须检查V的所有值,然后必须执行循环......这也不起作用
      • 检查 V 的所有值是在循环中完成的(这意味着你已经执行了它);然后你说执行循环。什么意思?
      • 我的意思是,如果 V 的任何值违反了 V 满足的条件,也必须通过 for 循环进行更新。这清楚吗??
      • V(整个数组)必须更新到什么?让我们清楚 V[i] 是元素; V是数组; old_Vi 是 V[i] 的旧值,如果没有找到 V[i] 的值,则为 null。现在解释一下。
      • 如果V的任何一个值违反条件,则必须通过for循环更新整个V数组。旧_Vi必须用for循环创建的新V值更新。
      【解决方案4】:

      使用下面的代码continue;,此关键字仅针对该迭代终止循环,并且您的循环将对所有V (0,1,2...n) 值执行。

      if( (Vold[i]-Vnew[i)>0.005 ) { continue; }

      要了解有关continue 的更多信息,请尝试link

      【讨论】:

        【解决方案5】:

        我终于明白你想做什么了……

        final double threshold = 0.00005;
        
        boolean failed = false;
        do {
            for (int i = 0; i < V.length; i++) {
                double Vold = V[i];
                V[i] = updateValue(V[i]);
                if (V[i] - Vold > threshold) {
                    failed = true;
                    // Not sure if you want this break in here - it's still unclear what you really want
                    break;
                }
            }
        } while (failed);
        

        updateValue() 是实现所需更新的函数或表达式。

        【讨论】:

        • 您的预期结果是什么?如所写,上述代码没有可访问的结果,但问题中并不清楚您想要的结果。
        • 例如 V[0] 的值为 5.321。通过 for 循环,值将被更新 说 V[0] 的新值为 5.3214。我想减去新旧。不是V的连续值
        • 兄弟这适用于所有 V 值。我的问题是,如果 V 的一个值再次失败,则所有值都必须由 for 循环更新
        • 那么如果它在for 循环中失败了一次,停止for 循环并重试,并继续进行直到没有更新的值通过测试?
        猜你喜欢
        • 2014-02-12
        • 1970-01-01
        • 1970-01-01
        • 2015-01-18
        • 2015-01-05
        • 2015-03-06
        • 1970-01-01
        • 1970-01-01
        • 2017-08-08
        相关资源
        最近更新 更多