2017-07-15 147 views
0

我正在構建一個計算器,讓計算器工作,我需要將所有int數字轉換爲我的字符串中的兩個數字。例如,如果我有這個字符串:3 * 8 + 5/2-4,我想將他轉換爲:3.0 * 8.0 + 5.0/2.0-4.0。 我該怎麼做?如何將字符串與int轉換爲字符串與雙?

編輯:如果我有這樣的字符串:3.0 * 8.0 + 5.0/2.0-4,我想他轉換爲:3.0 * 8.0 + 5.0/2.0〜4.0

+0

解析時只需使用Double#parseDouble。 –

+1

如果字符串中已經有一個雙精度型,例如3.4564646,該怎麼辦?是否應舍入到小數點後一位? –

+0

@JacobG。,他不能將他的字符串解析爲double,因爲它包含數學運算符,如+,/, - 等 –

回答

0

您可以使用String#replaceAll通過替換字符串的正則表達式例如:

String regex = "(?<=^|[+/(*)-])(\\d+)(?=[+/(*)-]|$)"; 

// $1 references to the first captured group ---v 
String result1 = "3*8+5/2-4".replaceAll(regex, "$1.0"); 
//  ^--- "3.0*8.0+5.0/2.0-4.0" 

String result2 = "3.0*8+5/2-4.0".replaceAll(regex, "$1.0"); 
//  ^--- "3.0*8.0+5.0/2.0-4.0" 

String result3 = "3.0*(8+5)/(2-4.0)".replaceAll(regex, "$1.0"); 
//  ^--- "3.0*(8.0+5.0)/(2.0-4.0)" 
+2

如果已經存在雙號 –

+0

@AlexandrLihonosov,OP說「int」爲「double」,那麼你的解決方案將不起作用。你有沒有看到OP的問題? –

+1

是的,這只是我的假設,也可能是這樣的:3 * 8 + 5/2-4 + 3.5爲什麼不呢? –