Manipulation des npmbres numérique

Résolu
fandezizou Messages postés 16 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 28 septembre 2006 - 21 sept. 2006 à 23:27
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 23 sept. 2006 à 20:52
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

Ar0z Messages postés 44 Date d'inscription lundi 23 janvier 2006 Statut Membre Dernière intervention 12 août 2007
22 sept. 2006 à 09:32
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 !
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
22 sept. 2006 à 18:06
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);
3
Ar0z Messages postés 44 Date d'inscription lundi 23 janvier 2006 Statut Membre Dernière intervention 12 août 2007
22 sept. 2006 à 09:31
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;

}
0
fandezizou Messages postés 16 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 28 septembre 2006
23 sept. 2006 à 19:54
Merci beaucoup ça m'a bcp aidé ^^.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
23 sept. 2006 à 20:52
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);
0