跟大家講解下有關numberformatexception是什么異常,相信小伙伴們對這個話題應該也很關注吧,現在就為小伙伴們說說numberformatexception是什么異常,小編也收集到了有關numberformatexception是什么異常的相關資料,希望大家看到了會喜歡。
numberformatexception表示數字格式化異常,需要查看字符串里面夾雜著string或者其他類型,需要注意文本里面的內容必須是數字形式的字符串。
本教程操作環境:windows7系統、Dell G3電腦。
今天出現了個數字轉換異常,處理好后稍微總結了幾個出現情景。
E/AdroidRutime:致命異常:java.lang.NumberFormatException: Invalid int: "0 "
java.lang.NumberFormatException 數字格式異常。當試圖將一個String轉換為指定的數字類型,而該字符串確不滿足數字類型要求的格式時,拋出該異常.
Invalid int: "0 " 提示 把 "0 " 轉換成數字類型時出錯了.
具體是哪個類的哪個方法的哪一行的錯誤了,看下面錯誤堆棧,at com.example.myclock.TimerView$5.onTextChanged(TimerView.java:95) 在com.example.myclock.TimerView 類的onTextChanged方法里,imerView.java的第95行出錯了
. ------原因分析--------------------
"0 "在0后面有空格,在字符串轉換成數字時應該去除空格。
------解決方案--------------------
如: int vale=Integer.parseInt(s.toString().trim()); // ToString()是轉化為字符串的方法 Trim()是去字符串兩邊空格的方法。
其他拋出NumberFormatException情況:
情況一,超出轉換數值類型范圍:
用Integer.parseInt()轉換字符時拋出NumberFormatException異常,把字符改短一點又沒事 String line3[1]= "8613719716 "; int int1=java.lang.Integer.parseInt(line3[1]);
以上是程序中的一小段,但是在運行的過程中總是拋出異常 Exception in thread "main " java.lang.NumberFormatException: For input string: "8613719716 "
------原因分析--------------------
int類型存儲范圍是-2,147,483,648 --2,147,483,647。用System.out.println(Integer.MAX_VALUE);輸出的是2147483647。而你的 String line3[1]= "8613719716 ";超過了這個最大的值。
------解決方案--------------------
8613719716 根本無法直接使用int表示的,只能用long , 如果更大了就得用到BigInteger 。 Long.parseLong(String)。
參考:http://www.myexception.cn/j2se/NumberFormatException.html
情況二,轉換值類型沒有考慮值為空的狀況:
在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: unable to parse '' as integer
. ------原因分析--------------------
如果textbox startTime_hour_edittext 為空, Integer.parseInt就會試圖把 "" 轉換成 integer。這就是NumberFormatException出現的原因。所以在轉換為int類型前需要判斷 textbox startTime_hour_edittext中是否為空。
------解決方案--------------------
在使用 startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());之前
判斷條件:
if(!startTime_hour_edittext.getText().toString().equalsIgnoreCase("")) {startTime_hour_int=Integer.parseInt(startTime_hour_edittext.getEditableText().toString());}情況三,由于進制不同:
題主要做一個進制轉換.并且限定范圍為 30位的數 (1073741823) 或者(0111111111111111111111111111111). 問題出現在試圖轉換 111111111111111111111111111111的時候,出現 NumberFormatException.
此代碼是檢查輸入如果是二進制就轉換為int型數值
if (checkNumber(input)) { try { number = Integer.parseInt(input); } catch (NumberFormatException ex) { log(ex.getMessage()); } } else { toDecimal(); }這是檢查 String的布爾返回值方法的代碼.
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);更多編程相關知識,請訪問:編程入門!!
以上就是numberformatexception是什么異常的詳細內容,更多請關注php中文網其它相關文章!
來源:php中文網