我和论坛上的另一个人有同样的问题,但他的解决方案对我不起作用,所以我被告知要创建一个新线程。问题是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 :(得分: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;
我确定你会意识到发生了什么