Maison > Problème commun > Qu'est-ce que l'exception de format de nombre ?

Qu'est-ce que l'exception de format de nombre ?

青灯夜游
Libérer: 2021-01-14 18:25:46
original
59227 Les gens l'ont consulté

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.

Qu'est-ce que l'exception de format de 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());
}
Copier après la connexion
Cas 3, dû à différents systèmes de base :

La question implique principalement une conversion de base et la plage est limitée à 30-. nombres à chiffres (1073741823) ou (0111111111111111111111111111). Le problème se produit lors de la tentative de conversion de 1111111111111111111111111.

Ce code vérifie si l'entrée est binaire et la convertit en valeur entière.
if (checkNumber(input)) {
        try {
        number = Integer.parseInt(input);
        } catch (NumberFormatException ex) {
            log(ex.getMessage());
        }
    } else {
        toDecimal();
    }
Copier après la connexion

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;}
Copier après la connexion

Une exception s'est produite :

java.lang.NumberFormatException: For input string: "111111111111111111111111111111"
Copier après la connexion

------Analyse des causes--------------- -- -------

因为 Integer.parseInt(String) 默认是十进制.

所以需要使用 Integer.parseInt(String, int) 并且指定要转换的n进制的数字的n。比如二进制是2.

------解决方案--------------------

int value = Integer.parseInt(input, 2);
Copier après la connexion

更多编程相关知识,请访问:编程入门!!

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal