Trouver la position d'un chiffre a dans un nombre b

Résolu
Karim -  
KX Messages postés 19031 Statut Modérateur -
Bonjour,
je suis en train de pratiquer l’algorithmique et je dois Programmer la méthode chiffre(n, pos) qui renvoie le chiffre numéro pos de l’entier n. Si le
nombre n ne contient pas un tel chiffre, la méthode doit renvoyer -1.

J'ai crée ce programme

public static int nombreDeChiffres(int nbre){
  boolean continuer = true;
  int compteur = 0;
  while(continuer && nbre !=0){
   nbre = nbre/10;
   compteur++;
  }
  return compteur;
 }

public static int Chiffre(int a, int b){
  int compteur = nombreDeChiffres(a);
  boolean continuer = true;
  int resultat = 0;
  while(continuer){
   int c =(int) (a%Math.pow(10, compteur));
   int chiffre =(int) (a/Math.pow(10, compteur));
   if(chiffre == b){
    resultat = compteur;
   }
   else{resultat = -1;}
   continuer = a/10!=0;
   a = c;
   compteur --;
   
  }
  return resultat;
  
 }

public static void main(String[] args){
 
 
 System.out.println(Chiffre(1753,7));
}


mais je n'arrive pas à trouver le bon résultat attendu. J'ai cherché mais je n'ai pas trouve l'erreur svp.

Merci de m'aider.

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    C'est compliqué, très compliqué, trop compliqué...

    Exemple :

    public static int chiffre(int n, int pos) {
        for (int tmp = n, result = 1; tmp != 0; tmp /= 10, result++) {
            if (tmp % 10 == pos)
                return result;
        }
        return -1;
    }
    
    public static void main(String[] args) {
        System.out.println(chiffre(1735, 5)); // 1
        System.out.println(chiffre(1735, 3)); // 2
        System.out.println(chiffre(1735, 7)); // 3
        System.out.println(chiffre(1735, 1)); // 4
        System.out.println(chiffre(1735, 2)); // -1
    }
    0