[java] une erreur que j'arrive pas à corriger

Fermé
dikambo - 3 nov. 2006 à 23:55
 Fab - 6 nov. 2006 à 12:36
bonjour,
dans mon code j'ai une erreur à ce niveau:

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

u=(1).modInverse(i);


System.out.println("a= "+i+"et son inverse est "+u);
}
et voici l'erreur que ca me renvoie:
java:93: operator < cannot be applied to int,java.math.BigInteger

for(int i=1; i<n ;i++)

^

java:96: int cannot be dereferenced

u=(1).modInverse(i);

^
merci
A voir également:

3 réponses

Salut,

comme ça, c'est difficile à dire .
ESt-ce que tu pourrais mettre le programme entier ?
1
Okay, voilà son integralité :


import java.io.*;
import java.math.*;
class Algo
{
private BigInteger a0,b0,x,r, y, gcd;

//constructeur da la classe sup
Algo(BigInteger a, BigInteger b)
{
//declaration und initialisation des Variable
BigInteger x0 = new BigInteger("1");
BigInteger x1 = new BigInteger("0");
BigInteger y0 = new BigInteger("0");
BigInteger y1 = new BigInteger("1");
BigInteger sign = new BigInteger("1");
BigInteger null0 = new BigInteger("0");
BigInteger quotient, neu_x1, neu_y1;
a0 = a;
b0 = b;

while (b.compareTo(null) != 0)
{
r = a.mod(b);
quotient = a.divide(b);
a = b;
b = r;
neu_x1 = x0.add(quotient.multiply(x1));
neu_y1 = y0.add(quotient.multiply(y1));
x0 = x1;
y0= y1;
x1 = neu_x1;
y1= neu_y1;
sign = sign.negate();

}//fin while
gcd = a;
x = sign.multiply(x0);
y = (sign.negate()).multiply(y0);
}//fin contructeur

public BigInteger getA()
{
return a0;
}
public BigInteger getB()
{
return b0;
}

public BigInteger getX()
{
return x;
}

public BigInteger getY()
{
return y;
}

public BigInteger getGcd()
{
return gcd;
}

}//fin classe sup
//sous classe
class Inverse extends EuclAlg
{
private BigInteger r,j,u,c,n,d;//d=gcd,j=a,n=b

public Inverse(BigInteger a,BigInteger b)
{
super ((BigInteger) a,(BigInteger) b);//appel du construteur de la //classe sup
}



void getResidue()
{


j=getA();
n= getB();
System.out.println(n);
d=getGcd();

/
if(d.compareTo(null)==1)
/*************************là il ya erreur**************/
{
for(int i=1; i<n ;i++)
{
//calcul de l'element inverse
u=(1).modInverse(i);


System.out.println("a= "+i+"et son inverse est"+u);

}
}

}

}
1
Première erreur :

Il faut faire un cast de n (BigInteger) en int car l'opérateur '<' ne peut pas comparer un entier avec un objet de type BigInteger.

Deuxième erreur :

Il faut remplacer (1).modInverse(i) par BigInteger.modInverse(Integer.toString(i)).

(voir http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigInteger.html)
1