模数不为正:BigInteger

| 错误-模量不为正 BigInteger取值0或-ve,但我不知道在哪里
public int[] conCheck(BigInteger big)
{
    int i=0,mul=1;
    int a[]= new int[10];
    int b[]= new int[10];
    BigInteger rem[]= new BigInteger[11]; 
    BigInteger num[]= new BigInteger[11]; 


    String s=\"100000000\";//,g=\"9\";
    //for(i=0;i<5;i++)
    //s=s.concat(g);

    BigInteger divi[]= new BigInteger[11]; 
    divi[0]=new BigInteger(s);
    num[0]=big; 
    for(i=0;i<10;i++)  
    {    
        int z = (int)Math.pow((double)10,(double)(i+1));
        BigInteger zz = new BigInteger(String.valueOf(z));
        divi[i+1]=divi[i].divide(zz);
        num[i+1]=num[i].divide(zz);
    }

{   for(i=0;i<10;i++) 

    {
        rem[i] = num[i].mod(divi[i]);       
        b[i]=rem[i].intValue();
        if(i>=4)
        {
            mul= b[i]*b[i-1]*b[i-2]*b[i-3]*b[i-4]; 
        }

        a[i]=mul;
    }
    }


    return a;


}
与控制台错误
C:\\jdk1.6.0_07\\bin>java euler/BigConCheck1
Exception in thread \"main\" java.lang.ArithmeticException: BigInteger: modulus no
t positive
        at java.math.BigInteger.mod(BigInteger.java:1506)
        at euler.BigConCheck1.conCheck(BigConCheck1.java:31)
        at euler.BigConCheck1.main(BigConCheck1.java:65)
    
已邀请:
        您正在除以大整数。 让我们看看在循环中计算出
divi
的值是什么:
 i     divi[i]            zz   divi[i+1]
 0    100000000           10   10000000
 1     10000000          100     100000
 2       100000         1000        100
 3          100        10000          0
 4            0       100000          0
 5            0      1000000          0
 6            0     10000000          0
 7            0    100000000          0
 8            0   1000000000          0
 9            0  10000000000          0
然后,您尝试除以divi [4](= 0),这显然会因您发布的异常而失败。     
        看一下mod方法的定义。 http://download.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html#mod%28java.math.BigInteger%29 如果m <= 0,它将在
public BigInteger mod(BigInteger m)
中引发ArithmeticException。 m为0。这就是为什么您要获取异常。     
        也就是说,模数(右侧的数字)不得为负。必须大于0     

要回复问题请先登录注册