Java 我想写一个代码来回答一个无穷级数,它有交替的加法和减法运算。在我的代码中,我看不到错误

Java 我想写一个代码来回答一个无穷级数,它有交替的加法和减法运算。在我的代码中,我看不到错误,java,loops,for-loop,series,Java,Loops,For Loop,Series,我已经写了下面的for循环,每次执行下面的代码,我得到的最终结果是1 我的代码有什么问题 1-1/2+1/3-1/4+1/5-1/6………直到n个条款 package Practice; import java.util.Scanner; public class SeriesHW { public static void main(String[] args) { Scanner input = new Scanner(System.in); Sy

我已经写了下面的for循环,每次执行下面的代码,我得到的最终结果是1

我的代码有什么问题

1-1/2+1/3-1/4+1/5-1/6………直到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.util.Scanner;
公开课系列{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
System.out.println(“直到要计算这个系列的数字是多少?”);
int n=input.nextInt();
int resultone=0;

对于(int i=1;i使用
BigDecimal
而不是
int
,因为当您将
int
作为变量或文本引入十进制世界时,Java的自动装箱会带来很多麻烦

注:目前将小数点四舍五入至celing,并将刻度保持在第2行下方
resultone=resultone.add(BigDecimal.ONE.divide(BigDecimal.valueOf(i),2,RoundingMode.天花));

根据您的需要随时更新

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);
    }

}


为什么你认为代码是错误的预期结果是什么?我认为你的问题是ResultTone和resulttwo的类型。或者应该是浮点或双精度?请不要在你的问题中只使用大写字符。谢谢你的回答…我第一次使用我的网站…你说在哪里不使用大写是什么意思?大写case words的意思是叫喊。请记住这一点…谢谢我认为您使用了错误的数据类型。这里有一条线索:
1/i
将为零…因为您将整数除以整数,这将在Java中生成整数。
Till what number you want to calculate this series?
10
Answer is : 0.66