Java の NumberFormatException 例外はどのように生成されるのでしょうか?

PHPz
リリース: 2023-06-24 19:42:09
オリジナル
1122 人が閲覧しました

Java の NumberFormatException は、文字列を数値型に変換するときに、その文字列が数値型の形式要件を満たしていないことが判明した場合に、この例外が生成されることを意味します。ここでは、NumberFormatException 例外の原因、解決策、対処法について、以下の観点から説明します。

  1. 原因

Java では、文字列を数値型に変換するときに、次の条件を満たす必要があります。数字のみ。

    文字列には、正負の符号が 1 つだけ含まれています。
  • 文字列には小数点が 1 つだけ含まれています。
  • 文字列にはスペースやその他の数字以外の文字を含めることはできません。
  • 文字列が上記の要件のいずれかを満たさない場合、NumberFormatException 例外が発生します。
たとえば、次のコードを実行します。

String str = "123.45a";
int num = Integer.parseInt(str);
ログイン後にコピー

文字列に数字以外の文字「a」が含まれているため、NumberFormatException 例外がスローされます。

解決策

  1. Java には、NumberFormatException 例外の発生を回避するためのさまざまなメソッドが用意されています。

正規表現を使用して、数値以外の文字を除外します。

  • たとえば、次のコードを使用して、文字列内の数値以外の文字をフィルタリングして除外できます。
  • String str = "123.45a";
    str = str.replaceAll("[^\d.+-]", "");
    int num = Integer.parseInt(str);
    ログイン後にコピー

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

  • たとえば、コード内で try-catch ステートメントを使用すると、NumberFormatException 例外をキャッチできます。
  • String str = "123.45a";
    try {
        int num = Integer.parseInt(str);
    } catch (NumberFormatException e) {
        e.printStackTrace();
    }
    ログイン後にコピー

数値型解析メソッドを使用して、例外を回避します。

  • Java は、parseInt、parseLong、parseDouble など、さまざまな数値型解析メソッドを提供します。これらのメソッドは、文字列内の数値以外の文字を自動的に除外します。
たとえば、次のコードを使用すると、NumberFormatException 例外の発生を回避できます。

String str = "123.45a";
double num = Double.parseDouble(str);
ログイン後にコピー

対処戦略

  1. 合理的な戦略を策定する必要があります。 NumberFormatException例外発生の予防策。一般的な戦略をいくつか示します。

ユーザーが入力した数値の形式チェックを実行します。入力ボックスに正規表現の制限を追加するか、修正された数字キーボードを使用して、ユーザーによる不正な文字の入力を制限します。

    文字列をフィルタリングして変換します。コード内で正規表現または数値解析メソッドを使用して、文字列に数値のみが含まれていることを確認します。
  • 例外をキャッチし、ユーザーにプロンプ​​トを表示します。コード内で try-catch ステートメントを使用して NumberFormatException 例外をキャッチし、入力文字列が数値形式の要件を満たしていないことをユーザーに通知するプロンプトを発行します。
  • 要約すると、文字列が数値型の形式要件を満たしていないために、NumberFormatException 例外が発生します。例外を回避するには、ユーザー入力をチェックし、入力文字列をフィルタリングして変換し、合理的な応答戦略を策定する必要があります。

以上がJava の NumberFormatException 例外はどのように生成されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート