【问题标题】:Var in and outside of a for loop变量在for循环内外
【发布时间】:2016-05-06 16:18:54
【问题描述】:

我和论坛上的另一个人有同样的问题,但他的解决方案对我不起作用,所以我被告知要创建一个新线程。问题是 for 循环中的新值计算不是正在更新外面的资源。就像内部变量和外部变量不同,因为当我删除最后一个 res 时,第一个变为灰色并说它从未被访问过。

    double res = 0; // result
    for (int i = 0; i>=poly.size() - 1; i++) {

        res += poly.get(i) * var;
    }

    return res;

res的值始终为0;我删除了块的其余部分,所以我不会遇到麻烦

【问题讨论】:

  • 是 var 0 吗?您是否尝试过在 += 之后放置一个常量而不是该语句?
  • var的值是多少?
  • for 循环初始化中的第二条语句指定循环运行需要满足的条件。显然,您的起始值为 0 不会满足该条件,因此循环永远不会运行。

标签: java for-loop scope


【解决方案1】:

我假设它总是返回 0,因为循环不会运行,因为您的条件可能是错误的,而当它不是时,它无论如何都是无用的(作为循环)。

您使用此代码 - for (int i = 0; i>=poly.size() - 1; i++) - 将 i 初始化为 0,然后检查数组的大小,期望它是 >=。但这只会在size() 为 1 或 0 时发生。

你需要的是for (int i = 0; i < poly.size(); i++)。

【讨论】:

    【解决方案2】:

    将 >= 更改为

    double res = 0; // result
    for (int i = 0; i<=poly.size() - 1; i++) {
    
        res += poly.get(i) * var;
    }
    
    return res;
    

    【讨论】:

      【解决方案3】:

      有两种可能会出错:

      首先var变量为0

      第二你的条件不对,你要确保你的条件是你需要的,否则会一直返回false

      【讨论】:

        【解决方案4】:

        试试这个

        for (int i = 0; i < poly.size() ; i++) {
        

        或者

        for (int i = 0; i <= poly.size() - 1 ; i++) {
        

        并确保 var != 0

        【讨论】:

          【解决方案5】:

          这样做:

          double res = 0; // result
          System.out.println("poly size: " + poly.size());
          for (int i = 0; i>=poly.size() - 1; i++) {
              System.out.println("res before: " + res);
              res += poly.get(i) * var;
              System.out.println("res after: " + res);
          }
          
          return res;
          

          我相信你会意识到发生了什么

          【讨论】:

          • “我相信你已经意识到发生了什么”不是答案。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-05
          • 2016-08-31
          相关资源
          最近更新 更多