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]);
上記は短いセクションですプログラムの例外ですが、実行中はプロセス中に常に例外がスローされます。
#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 では正しいですか? 取得した . ##startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString()); logcat で次のエラーが発生しました。 . -----原因分析--------------------- テキストボックス startTime_hour_edittext が空の場合、Integer.parseInt は "" を整数に変換しようとします。これが NumberFormatException が発生する理由です。したがって、int 型に変換する前に、 textbox startTime_hour_edittext が空かどうかを判断する必要があります。 ############ - - - 解決 - - - - - - - - - - ########## # #使用前に startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString()); このコードは、入力がバイナリかどうかを確認し、それを int に変換します。 . 値を入力 String の Boolean 戻り値メソッドを確認するコードです。 因为 所以需要使用 ------解决方案-------------------- 更多编程相关知识,请访问:编程入门!!
-----原因分析-------- ------ ------<span >判定条件: </span><div class="code" style="position:relative; padding:0px; margin:0px;"><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("")) {
startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());
}</pre><div class="contentsignin">ログイン後にコピー</div></div>
ケース 3、ベース システムが異なるため: <span style="font-family:Arial,\Helvetica Neue\, Helvetica,sans-serif; color:#242729"></span>
質問は主にベース変換に関係します。範囲は 30 桁の数字 (1073741823) または (0111111111111111111111111111111) に制限されています。1111111111111111111111111111111 を変換しようとすると問題が発生します。NumberFormatException。if (checkNumber(input)) {
try {
number = Integer.parseInt(input);
} catch (NumberFormatException ex) {
log(ex.getMessage());
}
} else {
toDecimal();
}
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 サイトの他の関連記事を参照してください。