我想写一段代码来回答一个无限数列,其中有交替的加减运算。

问题描述 投票:-1回答:1

我写了下面的for循环,每次执行下面的代码都得到FinalResult答案为1。

我的代码有什么问题?

1-12+13-14+15-16......直到n个条款。

package Practice;

import java.util.Scanner;

public class SeriesHW {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Till what number you want to calculate this series?");
        int n=input.nextInt();


        int resultone = 0;
        for(int i=1;i<=n;i=i+2) {

             resultone+=1/i;

        }
        int resulttwo = 0;
        for(int j=2;j<=n;j=j+2) {

        resulttwo+=1/j;

       }
      int finalresult=resultone-resulttwo;
      System.out.println("Answer is : " + finalresult);
    }

}
java loops for-loop series
1个回答
0
投票

练习;导入java.... BigDecimal 而不是 int 因为Java的自动装箱会给你带来很多麻烦,当你带了 int 在十进制世界中,无论是作为变量还是作为字面,都可以在十进制世界中进行。

注:目前将小数点舍入到celel,并在下面一行保持2的比例。resultone = resultone.add(BigDecimal.ONE.divide(BigDecimal.valueOf(i),2, RoundingMode.CEILING));

根据您的需要,可以随时更新它。

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Scanner;

public class SeriesHW {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Till what number you want to calculate this series?");
        int n = input.nextInt();
        BigDecimal resultone = BigDecimal.ZERO;
        for (int i = 1; i <= n; i = i + 2) {
            resultone = resultone.add(BigDecimal.ONE.divide(BigDecimal.valueOf(i),2, RoundingMode.CEILING));
        }
        BigDecimal resulttwo = BigDecimal.ZERO;
        for (int j = 2; j <= n; j = j + 2) {

            resulttwo = resulttwo.add(BigDecimal.ONE.divide(BigDecimal.valueOf(j),2, RoundingMode.CEILING));

        }
        BigDecimal finalresult = resultone.subtract(resulttwo) ;
        System.out.println("Answer is : " + finalresult);
    }

}

产量:

Till what number you want to calculate this series?
10
Answer is : 0.66
© www.soinside.com 2019 - 2024. All rights reserved.