在for循环中的变量

时间:2016-01-29 02:35:41

标签: java for-loop scope

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

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

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

    return res;

res的值始终为0;我删除了剩余的块,所以我没有遇到麻烦

5 个答案:

答案 0 :(得分:2)

我认为它总是返回0,因为循环不会运行,因为你的条件很可能是假的,而且当它不是无用的(作为一个循环)时。

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

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

答案 1 :(得分:0)

将&gt; =更改为&lt; =并且它将根据给定的信息生效。原因是您提供的代码将是永久循环,或者for循环将永远不会运行,因为0不大于poly.size()。看到你正在获得输出,那么后者就是问题。

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

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

return res;

答案 2 :(得分:0)

有两种可能的错误:

首先 var变量为0

第二你的病情是错的,你必须确保你的病情是你需要的,否则它总会返回假

答案 3 :(得分:0)

试试这个

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

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

确保var!= 0

答案 4 :(得分:-2)

这样做:

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;

我确定你会意识到发生了什么