2016-02-29 81 views
2

的可能性,我有一個字符串,我成功地提取了兩個特殊字符之間的文本處理空parseInt函數

(我文本是數字,例如 - 喜773%什麼% - 我得到773)

我用praseInt改變我的號子成整數(這是成功的)。

那裏有我的程序崩潰和燒傷(praseInt numformat除外), 是當我的字符串中包含特殊字符之間沒有數字。

my_String = 「heyhow $ $你」 作品,我得到98765,也可以輕鬆parseInt函數

my_String = 「heyhow $$ areyou」 運行時錯誤

String str = "heyhow$$areyou"; 
int startIndex = str.indexOf('$'); 
int lastIndex = str.indexOf('$', i+1); 
String nums = str.substring(startIndex + 1, lastIndex); 
int stringNumber = Integer.parseInt(nums); <--runtime error cause of no# to parse 

預先感謝您的任何幫助。如果你有一個想法,不涉及使用循環或條件語句,這將是最好的!

+0

INT stringNumber =(NUMS!= NULL爲整數。parseInt函數(NUMS):0); – Rahul

+3

當你的字符串在特殊字符之間不包含數字時,你想要發生什麼?你必須使用一些條件語句/表達式或捕獲異常。 – Eran

+0

爲什麼只檢查空值。如果輸入是「」試試$ this $ out「'?價值將會是「這個」,這也會失敗。 – Andreas

回答

2

使用這個代替:

int stringNumber = nums.length() > 0 ? Integer.parseInt(nums) : 0; 

這將解析的數量,如果它的長度不爲零,否則將設置stringNumber的價值0。如果您想爲空字符串指定不同的值,請更改它。如果分隔符之間的字符串是不是有效的數字

這仍然會失敗。如果這是一個可能性:

int stringNumber = 0; 
try { 
    stringNumber = Integer.parseInt(nums); 
} 
catch (NumberFormatException nx) 
    // depends on how you want to handle invalid numbers 
} 
+0

nums.length()會拋出NPE,如果nums == null – Rahul

+0

這很完美!謝謝。 – Qbert

+4

'str.substring()'不能返回null。 –

0

的Java三元運算符可以很好地使用如下:

int stringNumber = (!nums.isEmpty() ?Integer.parseInt(nums):0); 
+0

這工作也很棒!我需要0的回報,所以我可以知道人物之間沒有任何東西。 – Qbert

+1

如果該數字合法0,該怎麼辦? – ninesided

0

你最好的選擇是一個正則表達式,所以在檢測到您的標記之間的任何壞數據:

private static int extractInt(String input) { 
    Matcher m = Pattern.compile("\\$([0-9]+)\\$").matcher(input); 
    if (! m.find()) 
     return 0; 
    return Integer.parseInt(m.group(1)); 
} 

IDEONE的演示。

0
String str = "heywhatsgoing$$youtoday"; 
int startIndex = str.indexOf('$'); 
int lastIndex = str.indexOf('$', startIndex+1); 
String nums = str.substring(startIndex + 1, lastIndex); 
int stringNumber = nums.length() > 0 ? Integer.parseInt(nums) : 0; 

這給了我0.1

值這個答覆處理的異常的可能性,並給我,我可以用它來處理該異常的特定值。

感謝大家誰花時間來看看這個。

+0

「這個答案處理了例外的可能性」 - 這是不對的;如果你提供文本而不是數字,你的代碼仍然會拋出異常。在任何情況下,儘管自我回答是正確的,但您需要提供歸屬方式,讓別人回答並將其納入您的答案中。 –