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

Résolu/Fermé
Karim - Modifié le 20 nov. 2017 à 15:34
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 20 nov. 2017 à 18:02
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

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
20 nov. 2017 à 18:02
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