Manipulation des npmbres numérique

Résolu
Messages postés
16
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
28 septembre 2006
-
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
-
Bonjour,
J'ai un petit problème en Java je ne sait pas comment séparer les nombre numérique en java.
par exemple 201 qui fait 2 puis 0 puis 1.
exemple
int code=201
// je veux mon total soit (2*1) + (0*2) + (1*3)
ce n'est pas possible?
J'ai besoin de votre aide. Merci beaucoup. ^^

5 réponses

Messages postés
44
Date d'inscription
lundi 23 janvier 2006
Statut
Membre
Dernière intervention
12 août 2007

OUPS ! désolé !
C'était plutôt censé donner çà :

int method(int code){
char[] charNbre = (""+code).toCharArray();
int resultat = 0;
for(int i=0;i<charNbre.length;i++){
resultat += (Integer.parseInt(""+charNbre[i]))*(i+1);
}
return resultat;
}

Voilà, c'est mieux !
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut :

D'après ce que je vois c'est un problème d'algorithmiques.

// notre entier à décomposer
int n = 201;
System.out.println ("Entier = " + n);

// inverser cet entier exemple : 201 -> 102
int inverse = 0;   // pour calculer l'inverse
int tmp     = n;   // pour sauvegarder n
while (tmp > 0) {
   inverse += (tmp % 10) * 10;
   tmp /= 10;
}
System.out.println ("Inverse = " + inverse);

// faire ce que tu veux exemple (201) -> 1*3 + 0*2 + 2*1
tmp       = inverse;
int index = 1;   // compteur
int s     = 0;   // pour cumuler la somme
while (tmp > 0) {
   s += (tmp % 10) * 10 * index;
   tmp /= 10;
   ++index;
}
System.out.println ("Somme = " + s);
Messages postés
44
Date d'inscription
lundi 23 janvier 2006
Statut
Membre
Dernière intervention
12 août 2007

Je suppose que tu veux travailler avec des int ?

Alors, ce n'est surement pas la meilleure solution mais tu peux te
servir des char[], la methode parseInt de la classe Integer te
permettant de recuperer un int à partir d'un String.

Voici une méthode qui prends en parametre un int par ex (267) et qui renverra (2*1 + 6*2 + 7*3) :

int method(int code){

    char[] charNbre = (""+code).toCharArray();

    int resultat = 0;

    for(int i=0;i&lt;charNbre.length;i++){

        resultat += (Integer.parseInt(""+charNbre[i]))*(i+1);

    }

    return resultat;

}
Messages postés
16
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
28 septembre 2006

Merci beaucoup ça m'a bcp aidé ^^.
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Statut
Membre
Dernière intervention
26 juillet 2013
37
Salut :
(J'ai commis une erreur de frappe)
Une petite rectification ce code  est testé et il donne le resultat voulu :
Exemple si tu donne l'entier 1530 il donne le resultat de : 1*1 + 5*2 + 3*3 + 0*4






// notre entier à décomposer
int n = 201;

System.out.println ("Entier = " + n);





// inverser cet entier exemple : 201 -> 102






int inverse = 0;   // pour calculer l'inverse
int tmp     = n;   // pour sauvegarder n
while (tmp > 0) {
   inverse *= 10;
   inverse += (tmp % 10);
   tmp /= 10;
}
System.out.println ("Inverse = " + inverse);








// faire ce que tu veux exemple (201) -> 1*3 + 0*2 + 2*1









tmp       = inverse;
int index = 1;   // compteur
int s     = 0;   // pour cumuler la somme
while (tmp > 0) {
   s += (tmp % 10) * index;
   tmp /= 10;
   ++index;
}
System.out.println ("Somme = " + s);