"Exception dans le fil" Main "java.lang.numberformatException: pour la chaîne d'entrée:" L20 ""
Il s'agit du message d'erreur que j'ai reçu pour essayer de taper une chaîne de 3 chiffres à int. p>
Si j'ai bien compris la valeur maximale pour INT en Java est 2147483647? p>
Il s'agit de la méthode qui a provoqué la syntaxe p> Modifier: Pour clarification, la clé est une chaîne 12 bits générée au hasard par le code suivant P> edit 2: ci-dessous est un exemple de reproductible minimal et produit ce message d'erreur.
"Exception dans le fil" Main "Java.lang.numberFormatxception: pour la chaîne d'entrée:" L35 "
à java.lang.numberformatException.forinPutString (NumberFormatxception.java:65)
à java.lang.integer.parseint (INTEGER.JAVA:580)
à java.lang.integer.parseint (INTEGER.JAVA:615)
Au test.Gutée (test.java:57)
Au test.getkey (test.java:44)
Au test.encode (test.java:36)
Au test.Main (test.java:70) " p>
4 Réponses :
Utilisez le débogueur ou mettre un system.out.println code> à l'intérieur de la méthode,
getred (clé de chaîne) code> Pour vérifier la valeur de
Key.Substring ( 3,6) code>. L'exception que vous obtenez est parce que
clé.substring (3,6) code> ne renvoie pas un numéro.
private int getRed(String key) {
System.out.println(key.substring(3,6));
return Integer.parseInt(key.substring(3,6));
}
comme je vois que vous essayez de "
Comparez peut-être votre code à la mienne. J'ai à peu près la façon dont vous avez dit, avec seulement les moindres différences.
$ javac Num.java && java Num Full key: 255142125179 Parsing: 142 Parsed: 142 $ cat Num.java import java.util.Random; public class Num { public static int getRed(String key) { System.out.printf("Parsing: %s\n", key.substring(3, 6)); return Integer.parseInt(key.substring(3,6)); } public static void main(String[] args) { String key = new String(""); Random random = new Random(); for (int index = 0; index < 12; ++index) { key = key + Integer.toString(random.nextInt(10)); } System.out.printf("Full key: %s\n", key); int value = getRed(key); System.out.printf("Parsed: %d\n", value); } }
Je viens de comprendre ce qui n'allait pas Je n'ai pas initialisé la clé de chaîne à "", donc il est fait défaut à NULL et la sous-chaîne 3-6 qu'il tentait de convertir a commencé avec un l p>
Une fois que j'ai résolu, l'erreur est partie p>
merci à tous ceux qui ont aidé p>
Est-ce que ce premier chiffre un "un"? Cela ressemble presque à un «œil» capitale pour moi.
VI dit que c'est une minuscule "ell".
je suis confus, il ne devrait pas y avoir de l dans la corde
@Icarus Je pense que vous devez modifier votre question pour fournir plus de contexte à la manière dont cette erreur se produit. Je suis d'accord avec vous que ce que vous avez montré jusqu'à présent ne causera pas l'erreur que vous obtenez. Pouvez-vous s'il vous plaît fournir un exemple de reproductible minimal ?
Indice:
integer.tostring () code> n'est pas nécessaire dans la concaténation de la chaîne ...
Si vous copiez / collez le texte dans un convertisseur UNICODE-TO-HEX, par exemple. endmemo.com/unicode/unicodeconverter.php , alors vous verrez que
L35 code> est HEX
6C 33 35 CODE>, et lorsque vous cochez un Table de code UNICODE / ASCII , vous verrez que
6c code> est en effet un Petite lettre latine L B> .
BTW: Cette sous-chaîne n'est pas "3 bit", il est de 3 caractères (au moins 24 bits)
Modifier merci de le pointer