Java for循环内外的Var

Java for循环内外的Var,java,for-loop,scope,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; } re

我和论坛上的另一个家伙遇到了同样的问题,但他的解决方案对我不起作用,所以我被告知创建一个新线程。问题是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;我删除了块的其余部分,因此我不会遇到麻烦,我假设它总是返回0,因为如果条件可能为false,则循环不会运行,如果条件不是false,则无论如何都是无用的(作为循环)

您将此代码-
用于(int i=0;i>=poly.size()-1;i++)
-它将
i
初始化为0,然后根据数组的大小进行检查,预期它将是
=
。但只有当
size()
为1或0时,才会发生这种情况

您需要的是(inti=0;i执行以下操作:

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;

我相信你会意识到发生了什么变化。有两种可能的情况会使它出错:

First变量
var
为0

第二您的条件是错误的,您必须确保您的条件是您所需要的,否则它将始终返回false

试试这个

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


用于(int i=0;i是var 0?您是否尝试过在+=?var的值是多少?
var
?for循环初始化中的第二条语句指定了循环运行所需满足的条件。显然,您的起始值为0时不会满足该条件,因此循环i“我相信你知道发生了什么”不是答案。
for (int i = 0; i < poly.size() ; i++) {
for (int i = 0; i <= poly.size() - 1 ; i++) {