编写一个方法计算下列级数:m(i) = 1 / 2 + 2 / 3 + ....+ i / (i+1)

编写一个测试程序显示下面的表格
i m(i)
1 0.5000
2 1.1667
....
19 16.4023
20 17.3546

我自己编写的有错误,可是我就是改不出来,希望哪位大神知道能给看看改改,要是觉得我写的比较混乱就重新写个新的呗,指导指导,万分感谢!!!!
public class Text513{ public static void main(String[] args) { System.out.println("i" + "\t" + "m(i)"); for(int i = 1; i <= 20; i++) System.out.println(i + " \t " +s(i)); } public static int s(int a ){ for(int i = 1; i <= a; i++) { int b; double result ; result +=( i*1.0)/(i+1); b = (int)(result * 10000)/10000; return b; } }
}

可是我把return b 放在外面又无法识别变量 b 。
拜托编程大神们。。急用啊!

import java.text.DecimalFormat;

public class Text513
{
public static void main(String[] args) {
DecimalFormat df=new DecimalFormat(".####");
df.applyPattern("0.0000");
System.out.println("i" + "\t" + "m(i)");
for(int i = 1; i <= 20; i++)
System.out.println(i + "\t" +df.format(s(i)));
}

public static double s(int a){
double result=0.0;
for(int i = 1; i <= a; i++) {
result += (i*1.0)/(i+1);
}
return result;
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-13
public static double s(int a ){
double result = 0 ;
for(int i = 1; i <= a; i++) {
result += ( i*1.0)/(i+1);
}
return result;
}
第2个回答  2013-12-13

第3个回答  2013-12-14
上面的两位已经给你写好了,我就说说的你的 b为什么不能识别,
首先你得明白局部变量,全局变量以及作用域。b定义在for循环体内 ,属于局部变量,作用域为for循环体内,而你的return b放在循环体外,自然就没有所对应的b变量。
相似回答