ホームページ >Java >&#&チュートリアル >Java 文字列から数値への例外 (NumberFormatException) を解決するメソッド

Java 文字列から数値への例外 (NumberFormatException) を解決するメソッド

王林
王林オリジナル
2023-08-21 13:40:461797ブラウズ

Java 文字列から数値への例外 (NumberFormatException) を解決するメソッド

Java 文字列から数値への例外 (NumberFormatException) を解決するメソッド

Java プログラミングでは、文字列を数値に変換する必要がある状況によく遭遇します。ただし、文字列を数値に正しく変換できない場合は、NumberFormatException がスローされます。この例外は通常、parseInt()、parseLong() およびその他のメソッドを使用するときに発生し、プログラムが正常に実行できなくなります。この例外を回避し、文字列を数値に正しく変換するには、次の方法で処理できます。

1. try-catch ステートメントを使用して例外をキャッチする

try-catch ステートメントは、例外を処理するために最も一般的に使用される方法の 1 つです。 try ブロックを使用して文字列変換操作を実行し、catch ブロックで NumberFormatException 例外をキャッチすることで、プログラムのクラッシュを回避し、エラー処理を実行できます。

サンプルコードは以下のとおりです。

String strNumber = "123abc";
int number;

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

上記の例では、整数に変換できない文字列「123abc」を数値に変換しようとしています。変換できない場合、プログラムは NumberFormatException 例外をスローし、キャッチ内のコードを実行し、「文字列を数値に変換できません」というエラー メッセージを出力し、例外のスタック トレースを出力します。

2. 事前判定に正規表現を使用する

実際のアプリケーションでは、正規表現を使用して、文字列が数値の形式に準拠しているかどうかを判断できます。文字列が要件を満たしていない場合、NumberFormatException 例外のスローを避けるために変換操作は実行されません。以下は、整数と浮動小数点数を照合できる正規表現の例です。

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

isNumeric() メソッドを呼び出して文字列が数値かどうかを事前に判定することで、NumberFormatException 例外のスローを回避できます。 。

サンプルコードは以下のとおりです:

String strNumber = "123abc";
int number;

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

上記のコードでは、まず isNumeric() メソッドを呼び出して判定し、文字列が数値形式に準拠していれば変換して結果を返します。が出力され、それ以外の場合はエラーメッセージが出力されます。

3. 変換に正規表現またはツール クラスを使用する

事前判定プロセスが面倒な場合、または要件を満たせない場合は、変換操作に正規表現またはツール クラスを使用できます。たとえば、変換には、Pattern クラスと Matcher クラスの find() メソッドを使用するか、Apache Commons パッケージの NumberUtils ユーティリティ クラスのメソッドを使用します。

サンプル コードは次のとおりです。

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("字符串无法转换为数字");
}

上記のコードでは、正規表現と Matcher クラスの find() メソッドを使用するか、次の NumberUtils ツール クラスのメソッドを使用します。変換用の Apache Commons パッケージが動作します。どちらの方法でも NumberFormatException 例外を回避し、文字列を数値に正しく変換します。

要約すると、try-catch ステートメントを使用して例外をキャッチするか、事前判定に正規表現を使用するか、変換に正規表現またはツール クラスを使用することで、Java 文字列から数値例外 (NumberFormatException) を解決できます。 )問題。実際のニーズに基づいて適切なソリューションを選択することで、プログラムの安定性と信頼性を確保できます。

以上がJava 文字列から数値への例外 (NumberFormatException) を解決するメソッドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。