Maison  >  Article  >  Java  >  Comment l'exception NumberFormatException en Java est-elle générée ?

Comment l'exception NumberFormatException en Java est-elle générée ?

PHPz
PHPzoriginal
2023-06-24 19:42:091063parcourir

L'exception NumberFormatException en Java signifie que lors de la conversion d'une chaîne en type numérique et qu'il s'avère que la chaîne ne répond pas aux exigences de format du type numérique, cette exception sera générée. Ce qui suit discutera des causes, des solutions et des stratégies d’adaptation des exceptions NumberFormatException sous les aspects suivants.

  1. Cause

En Java, lors de la conversion d'une chaîne en type numérique, les conditions suivantes doivent être remplies :

  • La chaîne ne contient que des caractères numériques.
  • La chaîne ne contient qu'un seul signe plus ou moins.
  • La chaîne ne contient qu'un seul point décimal.
  • Les chaînes ne peuvent pas contenir d'espaces ou d'autres caractères non numériques.

Si la chaîne ne répond à aucune des exigences ci-dessus, une NumberFormatException sera générée.

Par exemple, exécutez le code suivant :

String str = "123.45a";
int num = Integer.parseInt(str);

Parce que la chaîne contient le caractère non numérique "a", une exception NumberFormatException sera levée.

  1. Solution

Java fournit une variété de méthodes pour éviter l'apparition d'exceptions NumberFormatException.

  • Utilisez des expressions régulières pour filtrer les caractères non numériques.

Par exemple, vous pouvez utiliser le code suivant pour filtrer les caractères non numériques dans une chaîne :

String str = "123.45a";
str = str.replaceAll("[^\d.+-]", "");
int num = Integer.parseInt(str);
  • Interceptez les exceptions à l'aide d'une instruction try-catch.

Par exemple, vous pouvez utiliser l'instruction try-catch dans le code pour intercepter l'exception NumberFormatException :

String str = "123.45a";
try {
    int num = Integer.parseInt(str);
} catch (NumberFormatException e) {
    e.printStackTrace();
}
  • Utilisez la méthode d'analyse de type numérique pour éviter les exceptions.

Java fournit une variété de méthodes d'analyse de types numériques, telles que parseInt, parseLong, parseDouble, etc. Ces méthodes filtreront automatiquement les caractères non numériques dans les chaînes.

Par exemple, vous pouvez utiliser le code suivant pour éviter l'apparition de NumberFormatException :

String str = "123.45a";
double num = Double.parseDouble(str);
  1. Stratégie d'adaptation

Une stratégie de réponse raisonnable doit être développée pour l'apparition de NumberFormatException. Voici quelques stratégies courantes :

  • Vérification du format des nombres saisis par l'utilisateur. Ajoutez des restrictions d'expression régulière à la zone de saisie ou utilisez un clavier numérique modifié pour empêcher les utilisateurs de saisir des caractères illégaux.
  • Filtrez et convertissez les chaînes. Utilisez des expressions régulières ou des méthodes d'analyse numérique dans votre code pour vous assurer que la chaîne ne contient que des caractères numériques.
  • Détectez les exceptions et invitez l'utilisateur. Utilisez l'instruction try-catch dans le code pour intercepter l'exception NumberFormatException et émettre une invite à l'utilisateur, lui indiquant que la chaîne d'entrée ne répond pas aux exigences de format numérique.

Pour résumer, l'exception NumberFormatException se produit car la chaîne ne répond pas aux exigences de format du type numérique. Afin d'éviter les exceptions, les entrées de l'utilisateur doivent être vérifiées, les chaînes d'entrée doivent être filtrées et converties et des stratégies de réponse raisonnables doivent être formulées.

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!

Déclaration:
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