数学计算中的Java错误

时间:2014-10-23 17:40:07

标签: java for-loop computation

我正在尝试在表格中打印以下系列:

m(i) = 1/2 + 2/3 + ... + i/(i + 1)

该表格如下所示:

i m(i) 1 0.5000 2 1.1667 ... 19 16.4023 20 17.3546

但我现在得到的表是:

1 0.5 2 0.6666666666666666 3 0.75 4 0.8 5 0.8333333333333334 6 0.8571428571428571 7 0.875 8 0.8888888888888888 9 0.9 10 0.9090909090909091 11 0.9166666666666666 12 0.9230769230769231 13 0.9285714285714286 14 0.9333333333333333 15 0.9375 16 0.9411764705882353 17 0.9444444444444444 18 0.9473684210526315 19 0.95 20 0.9523809523809523

我到目前为止的代码如下:

public class Help {

public static double printSeries(int ch1, int ch2){

    for (int i=ch1; i <= ch2; i++){
        double iPlusOne = i+1;
        double mi =+ i/iPlusOne; 
        System.out.println(i + "      "  + mi);

    }// end of for loop
    return 0.00;
}// end of printSeries method

public static void main(String args[]){
    printSeries(1, 20);
}// end of main method

}// end of class

由于某些原因,mi未将mi添加到自身。我的代码的语法有问题吗?

由于

2 个答案:

答案 0 :(得分:1)

语法错误。您=+的位置应为+=。编译器不反对,因为它仍然是一个有效的语句。

答案 1 :(得分:0)

你在循环中声明了这么多,所以在每次迭代时它都会创建一个新的mi变量。试试这个

public class Help {

public static double printSeries(int ch1, int ch2){
    double mi=0;
    double iPlusOne=0;
    for (int i=ch1; i <= ch2; i++){
        iPlusOne = i+1;
        mi += i/iPlusOne; 
        System.out.println(i + "      "  + mi);

    }// end of for loop
    return 0.00;
}// end of printSeries method

public static void main(String args[]){
    printSeries(1, 20);
}// end of main method

}// end of class

输出:

1      0.5
2      1.1666666666666665
3      1.9166666666666665
4      2.716666666666667
5      3.5500000000000003
6      4.4071428571428575
7      5.2821428571428575
8      6.171031746031746
9      7.071031746031746
10      7.980122655122655
11      8.896789321789322
12      9.819866244866246
13      10.748437673437675
14      11.681771006771008
15      12.619271006771008
16      13.560447477359244
17      14.504891921803688
18      15.45226034285632
19      16.40226034285632
20      17.354641295237272