溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

numberformatexception指的是什么異常

發(fā)布時間:2021-01-15 09:13:34 來源:億速云 閱讀:796 作者:小新 欄目:互聯(lián)網(wǎng)科技

這篇文章將為大家詳細講解有關numberformatexception指的是什么異常,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

numberformatexception表示數(shù)字格式化異常,需要查看字符串里面夾雜著string或者其他類型,需要注意文本里面的內(nèi)容必須是數(shù)字形式的字符串。

今天出現(xiàn)了個數(shù)字轉(zhuǎn)換異常,處理好后稍微總結(jié)了幾個出現(xiàn)情景。

numberformatexception指的是什么異常



E/AdroidRutime:致命異常:java.lang.NumberFormatException: Invalid int: "0 "

java.lang.NumberFormatException 數(shù)字格式異常。當試圖將一個String轉(zhuǎn)換為指定的數(shù)字類型,而該字符串確不滿足數(shù)字類型要求的格式時,拋出該異常.

Invalid int: "0 " 提示 把 "0 " 轉(zhuǎn)換成數(shù)字類型時出錯了.

具體是哪個類的哪個方法的哪一行的錯誤了,看下面錯誤堆棧,at com.example.myclock.TimerView$5.onTextChanged(TimerView.java:95) 在com.example.myclock.TimerView 類的onTextChanged方法里,imerView.java的第95行出錯了

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

"0 "在0后面有空格,在字符串轉(zhuǎn)換成數(shù)字時應該去除空格。

------解決方案--------------------

如: int vale=Integer.parseInt(s.toString().trim()); // ToString()是轉(zhuǎn)化為字符串的方法 Trim()是去字符串兩邊空格的方法。

其他拋出NumberFormatException情況:

情況一,超出轉(zhuǎn)換數(shù)值類型范圍:

用Integer.parseInt()轉(zhuǎn)換字符時拋出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

情況二,轉(zhuǎn)換值類型沒有考慮值為空的狀況:

在Android中這個序列是否正確,我打算把得到的edittext中的值轉(zhuǎn)換為整數(shù).

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

logcat 出現(xiàn)了如下錯誤. 05-12 10:26:35.536: ERROR/AndroidRuntime(293): java.lang.NumberFormatException: unable to parse '' as integer

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

如果textbox startTime_hour_edittext 為空, Integer.parseInt就會試圖把 "" 轉(zhuǎn)換成 integer。這就是NumberFormatException出現(xiàn)的原因。所以在轉(zhuǎn)換為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());
}

情況三,由于進制不同:

題主要做一個進制轉(zhuǎn)換.并且限定范圍為 30位的數(shù) (1073741823) 或者(0111111111111111111111111111111). 問題出現(xiàn)在試圖轉(zhuǎn)換 111111111111111111111111111111的時候,出現(xiàn) NumberFormatException.

此代碼是檢查輸入如果是二進制就轉(zhuǎn)換為int型數(shù)值

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;}

出現(xiàn)異常:

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

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

因為 Integer.parseInt(String) 默認是十進制.

所以需要使用 Integer.parseInt(String, int) 并且指定要轉(zhuǎn)換的n進制的數(shù)字的n。比如二進制是2.

------解決方案--------------------

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

關于“numberformatexception指的是什么異?!边@篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI