我尝试编写一个应该打印迭代总和的程序。
但是当前的代码是打印每次迭代的最终总和,我无法理解为什么:
package sumseries;
public class Sumseries {
public static void main(String[] args) {
System.out.println("i" + "\t\t"+ "m(i)");
System.out.println("===================");
int x=0;
for(int i=1;i<=20;i++){
System.out.println( i + "\t\t" + series(x) );
}
}
public static double series(int i){
double sum=0;
for(i=0;i<=20;i++){
sum += ((double) i)/(i+1);
}
return sum;
}
}
这里有什么问题,我该如何解决?
答案 0 :(得分:0)
你做错了两件事。
- 系列方法中的
System.out.println( i + "\t\t" + series(x)
, 在这里,你总是传递0到系列方法。- 的值 醇>
for(i=0;i<=20;i++)
, 这里再次设置i = 0;
public static void main(String[] args) {
System.out.println("i" + "\t\t"+ "m(i)");
System.out.println("===================");
int x=0;
for(int i=1;i<=20;i++){
//Pass Value of i instead of x=0;
System.out.println( i + "\t\t" + series(i) );
}
}
public static double series(int i){
double sum=0;
//Don't Iterate it Again for 20 times, Iterate it for i Number of value only.
for(int j=0;j<=i;j++){
sum += ((double) j)/(j+1);
}
return sum;
}
答案 1 :(得分:0)
在你的方法中:
public static double series(int i){//The parameter is variable i
double sum=0;
for(i=0;i<=20;i++){ // You are again initialising i as 0;
sum += ((double) i)/(i+1);
}
return sum;
}
我已经写了相邻行的评论。因此,无论您将此参数传递给此方法,您都可以获得相同的sum
。