Java for循环内外的Var
我和论坛上的另一个家伙遇到了同样的问题,但他的解决方案对我不起作用,所以我被告知创建一个新线程。问题是for循环中的新值calc没有更新外部的res。这就像内部和外部变量是不同的,因为当我删除最后一个res时,第一个变为灰色,并表示从未访问过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
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++) {