Programme java

Fermé
manono - 5 avril 2012 à 04:46
 Utilisateur anonyme - 6 avril 2012 à 12:08
Bonjour,

J'aimerais créer une méthode de type booléen, qui saisit une chaîne de caractère de 12 chiffres, seulement des chiffres ( de 0 a 9 ) et qui renvoi true si le dernier chiffre correspond au calcul suivant :
on fait la somme des chiffres en position impaire ( 1, 3, 5, 7, 9 )
on divise le résultat par 4 ( division entière )
on rajoute au résultat obtenu la somme des chiffres en position paire ( 0, 2, 4, 6, 8, 10 )
et le dernier chiffre, celui a la position 11 de la chaîne de caractère ( mais le 12ème réellement ) sera la quantité (nombre entre 0 et 9) que l'on doit ajouter au résultat du calcul
obtenu précédemment pour que le tout soit un multiple de 10.


Exemple : Soit le code 15243188984x où x est le chiffre de validation à déterminer. La somme des chiffres en
position impaire donne 5+4+1+8+8 = 26, en divisant par 4 on obtient 6. La somme des chiffres en position paire
donne 1+2+3+8+9+4 = 27. Le total donne 6 + 27 = 33, donc le chiffre de validation sera 7 (puisque 33 + 7 = 40 qui
est un multiple de 10)

Le problème est quand je fait ( code.charAt(1) + code.charAt(3).... ) ca prend la valeur décimale de chaque chiffre, or jai besoin de calcule le résultat avec la valeur réelle du chiffre. quand je le reconverti en type CHAR dans une variable, je n'arrive plus a faire le calcul par la suite ! merci pour votre aide
A voir également:

3 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
5 avril 2012 à 07:16
En faisant ça purement objet tu pourrais avoir :
int n = Integer.valueOf(String.valueOf(code.charAt(i)));
Mais il y a une méthode plus simple, moins coûteuse, et généralisable à d'autres intervalles de caractères qui est de faire la conversion implicite en int :
int n = code.charAt(i) - '0';
0
j'ai beaucoup de problème de réaliser ce code en java, j'ai besoin d'aide pour écrire ce code en java, s'il te plait aide moi.

Voyons avec l'exemple suivant:

voici le nombre:
324 217 694

En additionnant les chiffres occupant une position impaire, on obtient :
3+4+1+6+4 = 18

En multipliant par 2 chacun des chiffres occupant une position paire , on obtient :
2×2=4, 2×2=4, 7×2=14, 9×2=18

En additionnant les chiffres qui composent ces produits, on obtient :
4 + 4 + 1 + 4 + 1 + 8 = 22

En additionnant les deux résultats :
18 + 22 = 40

Le numéro est valide si le résultat est divisible par 10. Dans cet exemple, 40 est divisible par 10, donc le numéro est valide.
0
Utilisateur anonyme
6 avril 2012 à 12:08
Salut,

Je te montre comment réaliser le premier cas:


int totalPosImpaire = 0;
      	
         String nombreS = "324 217 694";
          
         nombreS = nombreS.replaceAll(" ", ""); // suppression des espaces >> "324217694"
         System.out.println("nombreS = " + nombreS);
         // cas des positions impaires
      	//En additionnant les chiffres occupant une position impaire, on obtient : 
         //3+4+1+6+4 = 18 
      
         for(int i = 0; i <nombreS.length(); i+=2)
         {
            String nPosImpaireS = nombreS.substring(i, (i+1));
            int nPosImpaireI = Integer.parseInt(nPosImpaireS);
            totalPosImpaire+= nPosImpaireI;
         }
         System.out.println("totalPosImpaire = " + totalPosImpaire);


Tu peux peut-être essayer le second cas un peu différent mais pas trop...

Cordialement,

Dan

--Plus on apprend... plus on se rend compte qu'on ne connaît pas grand-chose.
0