0

我应该重新创建这段代码

public static void main(String[] args) {

    // TODO, add your application code
    Scanner keyboard = new Scanner(System.in);
    System.out.print("Enter an integer: ");
    int n = keyboard.nextInt();
    double x = 0;
    System.out.print("The total is: ");
    for (int i = 1; i <= n; i++){
        x = x+-(1.0/i);
    }
    System.out.print(+x);
}

但是在循环中使用交替符号(1 – 1/2 + 1/3 – 1/4 + 1/5 – 1/6 + ... + 1/N)并让它打印出值(输入一个整数: 5 总数为:0.7833333333333332)

我想知道我怎么能做到这一点?我能够编写原始代码,但我不知道如何复制代码但使用交替符号。

4

3 回答 3

2
public static void main(String[] args) {

        // TODO, add your application code
        Scanner keyboard = new Scanner(System.in);
        System.out.print("Enter an integer: ");
        int n = keyboard.nextInt();
        double x = 0;
        System.out.print("The total is: ");
        for (int i = 1; i <= n; i++){
            if(i%2==0){ //even
                x = x-(1.0/i);
            }
            else{ //odd
                x = x+(1.0/i);
            }
        }
        System.out.print(+x);
    }

这可能是你想要做的。重要的变化是if(i%2==0)逻辑 - 在这里,我使用它作为基于i是偶数还是奇数交替 for 循环的不同迭代的一种方式。

希望对你有帮助,有什么问题可以问

于 2018-04-23T14:40:18.733 回答
1
    double s = -1; // Sign factor
    for (int i = 1; i <= n; i++) {
        s = -s;
        x += s/i;
    }
于 2018-04-23T14:50:05.317 回答
0

更改x = x+-(1.0/i);x -= Math.pow(-1,i)/i;。这应该够了吧。

于 2018-04-23T14:41:19.060 回答