numberformatexception indique une exception de formatage de nombre. Vous devez vérifier si la chaîne est mélangée avec une chaîne ou d'autres types. Il est important de noter que le contenu du texte doit être une chaîne sous la forme d'un nombre.
L'environnement d'exploitation de ce tutoriel : système Windows 7, ordinateur Dell G3.
Une exception de conversion numérique s'est produite aujourd'hui. Après l'avoir traitée, j'ai brièvement résumé quelques scénarios.
E/AdroidRutime : exception fatale : java.lang.NumberFormatException : entier non valide : "0 "
java.lang .NumberFormatException Exception de format numérique. Cette exception est levée lors de la tentative de conversion d'une String en un type numérique spécifié, et la chaîne ne répond pas au format requis par le type numérique.
Entier invalide : "0" Invite Convertir "0" Une erreur s'est produite lors de la conversion en un type numérique
Plus précisément, l'erreur s'est produite dans quelle méthode, quelle classe et quelle ligne. Veuillez consulter la pile d'erreurs ci-dessous, à com.exemple.myclock.TimerView$5.onTextChanged(TimerView.java:95) Dans la classe com.example.myclock.TimerView onTextChanged méthode, imerView.java a une erreur à la ligne 95
. - --- --Analyse des causes--------------------
"0 "Il y a un espace après 0, et l'espace doit être supprimé lorsque la chaîne est convertie en nombre.
------Solution--------------------
Par exemple : int vale=Integer .parseInt(s.toString() .trim()); // ToString() est converti en chaîne. La méthode Trim() est une méthode pour supprimer les espaces des deux côtés d’une chaîne.
Autres situations dans lesquelles NumberFormatException est levée :
Cas 1 , au-delà de la plage de conversion des types numériques :
Lorsque vous utilisez Integer.parseInt() pour convertir des caractères, NumberFormatExceptionException, changez les caractères en plus courts et tout ira bien
String line3[1]= "8613719716 ";
int int1=java.lang.Integer.parseInt(line3[1]);
Ce qui précède est une courte section du programme, mais il est en cours d'exécution. Une exception est toujours levée pendant le processus
Exception dans le fil "main" java.lang.NumberFormatException : pour la saisie chaîne : "8613719716"
------Analyse des causes ---- --------- ------
La plage de stockage de type int est -2 147 483 648 --2 147 483 647. Utilisez System.out.println(Integer.MAX_VALUE); la sortie est 2147483647. Et votre String line3[1]= "8613719716 "; dépasse cette valeur maximale.
------Solution--------------------
8613719716 ne peut pas être directement représenté par int, seulement long, S'il est plus grand, BigInteger doit être utilisé. Long.parseLong(String).
Référence : http://www.myexception.cn/j2se/NumberFormatException.html
Situation 2, La conversion des types de valeur ne prend pas en compte la situation où la valeur est vide :
Cette séquence est-elle correcte dans Android. Je prévois de mettre le dans edittext La valeur est convertie en entier .
startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());
L'erreur suivante s'est produite dans logcat .05-12 10:26:35.536: ERROR/AndroidRuntime(293): java.lang.NumberFormatException: unable to parse '' as integer
. ------Analyse des causes--------------------
Si la zone de texte startTime_hour_edittext est vide, Integer.parseInt tentera de convertir "" en entier. C'est pourquoi NumberFormatException se produit. Par conséquent, vous devez déterminer si textbox startTime_hour_edittext est vide avant de convertir en type int.
------Solution--------------------
En cours d'utilisation <span >startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());<code style="margin:0px; padding:1px 5px; border:0px; white-space:pre-wrap; background-color:rgb(239,240,241); font-weight:normal; font-style:normal"><span >startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());</span>
<code style="margin:0px; padding:1px 5px; border:0px; white-space:pre-wrap; font-size:15px; font-weight:normal; font-style:normal"><span style="font-family:Arial,Helvetica Neue, Helvetica,sans-serif; color:#242729">之前</span>
avant
Conditions de jugement :
if(!startTime_hour_edittext.getText().toString().equalsIgnoreCase("")) { startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString()); }
if (checkNumber(input)) { try { number = Integer.parseInt(input); } catch (NumberFormatException ex) { log(ex.getMessage()); } } else { toDecimal(); }
Ceci est un code de vérification pour la méthode de valeur de retour booléenne de String
private static boolean checkNumber(String input) { for (char c : input.toCharArray()) { if (!Character.isDigit(c)) { return false; } } return true;}
Une exception s'est produite :
java.lang.NumberFormatException: For input string: "111111111111111111111111111111"
------Analyse des causes--------------- -- -------
因为 Integer.parseInt(String)
默认是十进制.
所以需要使用 Integer.parseInt(String, int)
并且指定要转换的n进制的数字的n。比如二进制是2.
------解决方案--------------------
int value = Integer.parseInt(input, 2);
更多编程相关知识,请访问:编程入门!!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!