不兼容的类型:BigInteger无法转换为int

时间:2015-04-05 17:00:20

标签: java arrays biginteger

我正在尝试运行此代码,但我收到错误,我无法解决。请帮忙。

import java.util.Scanner;
import java.math.BigInteger;
class Cseq
{
    public static void main(String []args)
    {
        Scanner jais=new Scanner(System.in);
        int x=100000;
        BigInteger i;
        BigInteger []a = new BigInteger[x];
        a[0]=BigInteger.ONE;
        for(i=BigInteger.ONE;i.compareTo(BigInteger.valueOf(x))<=0;i=i.add(BigInteger.ONE))
        {
            a[i]=a[(i.subtract(BigInteger.ONE))].multiply(i);
        }
        int t=jais.nextInt();
        while(t--!=0)
        {
        BigInteger n=jais.nextBigInteger();
        BigInteger p=jais.nextBigInteger();
        BigInteger q=jais.nextBigInteger();
        BigInteger v=(q.subtract(p)).add(BigInteger.ONE);
        BigInteger j;
        BigInteger sum=BigInteger.ZERO;
        for(j=BigInteger.ONE;j.compareTo(n)<=0;j=j.add(BigInteger.ONE))
        {
            sum=sum.add(a[v].divide(a[(v.subtract(j))].multiply(a[j])));
            sum=sum.add(v);
        }
        sum=sum.subtract(v);
        System.out.println(sum);
        }
        jais.close();
    }
}

1 个答案:

答案 0 :(得分:0)

你得到的5个错误都与数组的索引值有关。那应该是整数。

在所有这些表达式中,您需要将表达式结果更改为整数值。

a[i]=a[(i.subtract(BigInteger.ONE))].multiply(i);

此处i(i.subtract(BigInteger.ONE))应为整数。

sum=sum.add(a[v].divide(a[(v.subtract(j))].multiply(a[j])));

此处v(v.subtract(j))j应为整数。

相应地更改这些索引数据类型。  在所有这些地方使用intValue() look it here

更改此行代码

a[i]=a[(i.subtract(BigInteger.ONE))].multiply(i);

a[i.intValue()]=a[(i.subtract(BigInteger.ONE)).intValue()].multiply(i);