ホームページ >よくある問題 >数値形式例外とは何ですか?

数値形式例外とは何ですか?

青灯夜游
青灯夜游オリジナル
2021-01-14 18:25:4659222ブラウズ

numberformatException は、数値書式設定の例外を示します。文字列が文字列または他の型と混在していないかどうかを確認する必要があります。テキストの内容は数値形式の文字列である必要があることに注意してください。

数値形式例外とは何ですか?

このチュートリアルの動作環境: Windows 7 システム、Dell G3 コンピューター。

今日、デジタル変換例外が発生しました。対処した後、いくつかのシナリオを簡単にまとめました。




#E/AdroidRutime: 致命的な例外: java.lang.NumberFormatException: 無効な int: "0 "

##java.lang .NumberFormatException#数値形式の例外。この例外は、String を指定された数値型に変換しようとしたときにスローされますが、文字列が数値型で必要な形式を満たしていません。

#無効な int: "0 " Tips Convert "0 " エラー

具体的には、どのクラスのどのメソッドのどの行でエラーが発生したかは、以下のエラースタックを参照してください。 ##com.example.my Clock.TimerView$5.onTextChanged(TimerView.java:95)

com.example.my Clock の onTextChanged メソッド内。 TimerView クラス、imerView.java##. の 95 行目でエラーが発生しました ---- --原因分析--------------------

"0 "0 の後にスペースがあるため、文字列を数値に変換するときにスペースを削除する必要があります。 ################## - - - 解決 - - - - - - - - - - #### # #例:

int

vale=Integer .parseInt(s.toString() .trim()); // ToString() は文字列に変換されます。 Trim() メソッドは、文字列の両側のスペースを削除するメソッドです。 その他の NumberFormatException スロー状況:

ケース 1、数値型の変換範囲を超えています:

Integer.parseInt() を使用して文字を変換するときにスローされますNumberFormatException

例外ですが、文字をより短い長さに変更すれば問題ありません

##String line3[1]= "8613719716 "; int int1=java.lang.Integer.parseInt(line3[1]);
上記は短いセクションですプログラムの例外ですが、実行中はプロセス中に常に例外がスローされます。

スレッド「メイン」の例外 java.lang.NumberFormatException: 入力文字列の場合: 「8613719716」 「


-----原因分析-------- ------ ------

#int 型の格納範囲は -2,147,483,648 ~ 2,147,483,647 です。 System.out.println(Integer.MAX_VALUE) を使用します。出力は 2147483647 です。 そして、文字列 line3[1]= "8613719716 "; はこの最大値を超えています。 ##################### - - - 解決 - - - - - - - - - - # # #8613719716 int で直接表すことはできません。long のみを使用できます。

それより大きい場合は、BigInteger を使用する必要があります。 Long.parseLong(String)

参考: http://www.myException.cn/j2se/NumberFormatException.htmlケース 2、コンバージョン値のタイプは、値が空である状況を考慮しません:

このシーケンスは Android では正しいですか? 取得した

# を入れる予定です##edittext 値を整数に変換します

.

##startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString()); logcat で次のエラーが発生しました。

05-12 10:26:35.536: ERROR/AndroidRuntime(293): java.lang.NumberFormatException: 「 」を整数として解析できません

. -----原因分析---------------------

テキストボックス startTime_hour_edittext が空の場合、Integer.parseInt は "" を整数に変換しようとします。これが NumberFormatException が発生する理由です。したがって、int 型に変換する前に、 textbox startTime_hour_edittext が空かどうかを判断する必要があります。 ############ - - - 解決 - - - - - - - - - - ########## # #使用前に

startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());

<span >判定条件: </span><pre class="brush:js;toolbar:false;" style="margin-top:0px; padding:5px; border:0px; width:auto; max-height:600px; overflow:auto; word-wrap:normal">if(!startTime_hour_edittext.getText().toString().equalsIgnoreCase(&quot;&quot;)) { startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString()); }</pre>ケース 3、ベース システムが異なるため: <span style="font-family:Arial,\Helvetica Neue\, Helvetica,sans-serif; color:#242729"></span>質問は主にベース変換に関係します。範囲は 30 桁の数字 (1073741823) または (0111111111111111111111111111111) に制限されています。1111111111111111111111111111111 を変換しようとすると問題が発生します。NumberFormatException。

このコードは、入力がバイナリかどうかを確認し、それを int に変換します。 . 値を入力

if (checkNumber(input)) {
        try {
        number = Integer.parseInt(input);
        } catch (NumberFormatException ex) {
            log(ex.getMessage());
        }
    } else {
        toDecimal();
    }

String の Boolean 戻り値メソッドを確認するコードです。

private static boolean checkNumber(String input) {
    for (char c : input.toCharArray()) {
        if (!Character.isDigit(c)) {
            return false;
        }
    }

    return true;}
例外が発生しました:

java.lang.NumberFormatException: For input string: "111111111111111111111111111111"

-----原因分析-- ---- ---------------

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

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

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

int value = Integer.parseInt(input, 2);

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

以上が数値形式例外とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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