Maison >Java >javaDidacticiel >Méthodes pour résoudre l'exception de chaîne Java en nombre (NumberFormatException)

Méthodes pour résoudre l'exception de chaîne Java en nombre (NumberFormatException)

王林
王林original
2023-08-21 13:40:461808parcourir

Méthodes pour résoudre lexception de chaîne Java en nombre (NumberFormatException)

Méthodes pour résoudre l'exception de conversion de chaîne Java en nombre (NumberFormatException)

En programmation Java, nous rencontrons souvent des situations où nous devons convertir des chaînes en nombres. Cependant, lorsque la chaîne ne peut pas être convertie correctement en nombre, une exception NumberFormatException est levée. Cette exception se produit généralement lors de l'utilisation de parseInt(), parseLong() et d'autres méthodes, entraînant l'échec du programme à s'exécuter normalement. Afin d'éviter cette exception et de convertir correctement la chaîne en nombre, nous pouvons la gérer de la manière suivante.

1. Utilisez l'instruction try-catch pour intercepter les exceptions

L'instruction try-catch est l'un des moyens les plus couramment utilisés pour gérer les exceptions. En utilisant un bloc try pour effectuer l'opération de conversion de chaîne et en interceptant l'exception NumberFormatException dans le bloc catch, nous pouvons éviter les plantages du programme et effectuer la gestion des erreurs.

L'exemple de code est le suivant :

String strNumber = "123abc";
int number;

try {
    number = Integer.parseInt(strNumber);
    System.out.println("转换后的数字为: " + number);
} catch (NumberFormatException e) {
    System.out.println("字符串无法转换为数字");
    e.printStackTrace();
}

Dans l'exemple ci-dessus, nous essayons de convertir une chaîne "123abc" qui ne peut pas être convertie en nombre entier. Lorsque la conversion ne peut pas être effectuée, le programme lèvera une exception NumberFormatException, exécutera le code dans le catch, affichera le message d'erreur "La chaîne ne peut pas être convertie en nombre" et imprimera la trace de pile de l'exception.

2. Utiliser des expressions régulières pour le pré-jugement

Dans les applications pratiques, nous pouvons utiliser des expressions régulières pour déterminer si une chaîne est conforme au format d'un nombre. Si la chaîne ne répond pas aux exigences, l'opération de conversion ne sera pas effectuée pour éviter de lever une exception NumberFormatException. Voici un exemple d'expression régulière pouvant correspondre à des nombres entiers et à des nombres à virgule flottante :

public static boolean isNumeric(String str) {
    return str.matches("-?\d+(\.\d+)?");
}

En appelant la méthode isNumeric() pour prédéterminer si la chaîne est un nombre, vous pouvez éviter de lever une exception NumberFormatException.

L'exemple de code est le suivant :

String strNumber = "123abc";
int number;

if (isNumeric(strNumber)) {
    number = Integer.parseInt(strNumber);
    System.out.println("转换后的数字为: " + number);
} else {
    System.out.println("字符串无法转换为数字");
}

Le code ci-dessus appellera d'abord la méthode isNumeric() pour jugement Si la chaîne est conforme au format numérique, elle sera convertie et le résultat sera affiché sinon, une erreur ; un message sera émis.

3. Utilisez des expressions régulières ou des classes d'outils pour la conversion

Si le processus de pré-jugement est fastidieux ou ne peut pas répondre aux exigences, nous pouvons utiliser des expressions régulières ou des classes d'outils pour les opérations de conversion. Par exemple, utilisez la méthode find() des classes Pattern et Matcher, ou utilisez les méthodes de la classe utilitaire NumberUtils dans le package Apache Commons pour la conversion.

L'exemple de code est le suivant :

import java.util.regex.Pattern;
import java.util.regex.Matcher;
import org.apache.commons.lang3.math.NumberUtils;

String strNumber = "123abc";
int number;

Pattern pattern = Pattern.compile("-?\d+");
Matcher matcher = pattern.matcher(strNumber);

if (matcher.find()) {
    number = Integer.parseInt(matcher.group());
    System.out.println("转换后的数字为: " + number);
} else {
    System.out.println("字符串无法转换为数字");
}

// 或者使用NumberUtils工具类
if (NumberUtils.isParsable(strNumber)) {
    number = Integer.parseInt(strNumber);
    System.out.println("转换后的数字为: " + number);
} else {
    System.out.println("字符串无法转换为数字");
}

Dans le code ci-dessus, nous utilisons des expressions régulières et la méthode find() de la classe Matcher, ou utilisons la méthode de la classe d'outils NumberUtils dans le package Apache Commons pour effectuer la conversion opération. Les deux méthodes évitent les exceptions NumberFormatException et convertissent correctement les chaînes en nombres.

En résumé, nous pouvons résoudre le problème de la conversion de chaîne Java en exception numérique (NumberFormatException) en utilisant des instructions try-catch pour intercepter les exceptions, en utilisant des expressions régulières pour le pré-jugement ou en utilisant des expressions régulières ou des classes d'outils pour la conversion. Choisir la solution appropriée en fonction des besoins réels peut garantir la stabilité et la fiabilité du programme.

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