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

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

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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)