Bonjour
quand je fait in Integer.parseInt("058589"), j'ai le retour 58589. Or je souhaiterais garder le "0". et plus généralement tous les chiffres de ma string.
Comment faire.
Merci de votre retour.
Version imprimable
Bonjour
quand je fait in Integer.parseInt("058589"), j'ai le retour 58589. Or je souhaiterais garder le "0". et plus généralement tous les chiffres de ma string.
Comment faire.
Merci de votre retour.
Bonsoir,
Pourquoi le mettre dans un int dans ce cas :koi:
Salut, tu peux utiliser ce bout de code:
Il te reste plus qu'à créer un algo pour connaitre la longueur de ta chaine de caractère. Ensuite créer un String de (la longueur de ton String)*0Code:
1
2 DecimalFormat df = new DecimalFormat("00000"); System.out.println(df.format(mon_nombre));
Je juge pas l'utilité de ce code, je lui ai juste dis comment faire pour avoir ce qu'il veut.
Bonjour
Avec unCitation:
Je juge pas l'utilité de ce code, je lui ai juste dis comment faire pour avoir ce qu'elle veut.
on renvoie une valeur entière, pas une chaine de caractère, juste une représentation binaire d'une valeur numérique.Code:Integer.parseInt("058589")
Je comprends pas le sujet de ce topic. ni son aboutissement.
Cordialement
Et moi je ne comprends pas pourquoi vous bloquez sur ce sujet :mouarf:
Il désir un entier sous la même forme que sa chaine de caractère. On sait pas ce qu'il souhaite en faire, donc il est difficile de juger si ce code est inutile ou pas
Ce qu'on comprend, c'est que :
- il a en entrée une chaîne de caractère.
- il veut la transformer en entier "formaté", c'est à dire en chaîne de caractère, avec le même format.
Je propose le code suivant qui est très performant pour faire ça :
Code:
1
2String chaineFormattee = "058589";
Ça risque de virer au troll tel que c'est parti :mouarf:
Integer.parseInt(String) convertit une chaîne de caractère en entier et là, le zéro de gauche n'étant pas significatif, il n'est pas affiché.
La représentation "0123456" est une représentation chaîne de caractères d'un entier et là, il faut utiliser un formateur (comme DecimalFormat) pour avoir le résultat attendu.
la discussion date de 2011... je pense qu'on peut clore le débat ;)
Oui mais là, c'est le compilateur qui le fait.
Dans l'exemple, c'est Integer.parseInt("012345") et là, on renvoie bien 12345
Pas parce que TU ne comprend pas que c'est forcément débile -_- ! Si tu as une base de donnée avec des clefs d'identifications .... Tu sais que tu auras, avec le temps, un grand nombre d'ID. Pourquoi ne pas afficher les 0 avant ?
Pour avoir une validation de ID, exclusivement numérique, valide en calculant le length, tes IDs doivent tous avoir le meme length. Autant ton ID #00001 que ton ID #99999 !
Et même si TU trouves que ca ne fais toujours pas de sens, si c'est se que le client souhaite ??? Tu vas refuser ?
Pour ma part, j'ai chercher se Topic car dans mon projet (étudiant) la consigne est d'avoir un ID a 5 chiffres ... Si tel est pas le cas, je dois afficher un message d'erreur ! Si j'ai un ID avec des 0 dabord, la validation indique qu'il n'a pas 5 chiffres ! Alors, moi, ça question je la trouve pertinente dans le cadre de mon projet !
Salut,
C'était peut-être dit un peu crûment, mais il est effectivement absurde de convertir une String en int pour la reformater ensuite en String pour remettre le ou les 0 qu'on aurait perdus lors de la conversion en int. Il suffit de conserver la String d'origine et de ne rien faire.
Par ailleurs, un identifiant comme tu le décris n'est pas un int, mais une chaîne : le fait qu'elle ne contienne que des chiffres n'en fait pas un int, justement parce que tous les signes ont leur importance au final et que de toute manière le but d'un id n'est pas de servir dans des calculs, mais uniquement pour identifier de façon unique un produit ou quelque chose dans le genre. Ceci est différent d'un nombre résultant d'un calcul qu'on voudrait afficher dans un format particulier (on utiliserait dans ce cas un formatage pour afficher le nombre comme voulu (DecimalFormat, String.format, etc.).
Et si tu as besoin de saisir une String ne contenant que des chiffres, au nombre précis de 5, tu peux gérer ça avec une String et faire un contrôle du genre :
ouCode:string.length()==5 && string.matches("\\d+");
On peut même s'assurer qu'il y ait toujours un 0 devant avec 4 chiffres derrière :Code:string.matches("\\d{5}");
ou toute autre règle de format qu'on voudrait.Code:string.matches("0\\d{4}");
Histoire de rajouter mon grain de sel a cette discussion abracadabrante de 2011 deja uppee en 2015 : tu sais que tu cherches une id a 5 chiffres des le debut donc tu connais le nombre de digit necessaires dans la chaine de sortie donc tu peux padder avec des zero supplementaires dans ton formatter si besoin.
L'erreur du posteur initial est surtout de ne pas avoir pige qu'il y a une tres grosse distinction entre la valeur numerique et sa representation en chaine de texte. Le 0 en prefixe n'existe pas dans la valeur numerique ; il n'est pas preserve. Il aurait fallu qu'il sauvegarde le nombre de digits au moment de la conversion dans une seconde variable et qu'il le reutilise lors du formattage du nombre pour padder avec des 0.
Carrément. Si le client te payes, c'est parce que tu comprend mieux l'informatique que lui. Donc, quand il te soumet des abbérations technique (genre stocker des id sous forme de string dans la db avec un nombre de digits déterminé alors que ce qu'il veut vraiment sans en avoir conscience c'est juste un format d'affichage), il est de TON DEVOIR de (poliment) le conduire à changer d'avis.Sinon c'est de la négligence voir une faute professionnelle.