input =「12 text 1 abc12 c12lj 7 3」;用於查找輸入字符串中存在的整數之和的程序
輸出= 12 + 1 + 7 + 3 = 23
注:在輸入串中的整數被由一個或多個空格分隔。不要考慮字母數字字符串。我曾遇到過solution。但我不想讓我的代碼拋出NumberFormatException。
到目前爲止,我已經嘗試下面的代碼和它的工作細如預期所有的情況下,不拋出任何NumberFormatException的
public class SumOfIntegersFromString {
private static final String NUMBER = "";
/** It matches one or many white spaces. **/
private static final String REG_EXPR_MATCH_ONE_OR_MORE_SPACES = "\\s+";
// Logic 1
private static int sumOfIntegersFromString(final String input) {
int count = 0;
String splits[] = input.split(REG_EXPR_MATCH_ONE_OR_MORE_SPACES);
for (String s : splits) {
if (isNumber(s.trim())) {
Integer no = new Integer(s);
count = count + no;
}
}
return count;
}
private static boolean isNumber(String str) {
boolean isNumber = Boolean.FALSE;
int count = 0;
for (int i = 0; i < str.length(); i++) {
String s = Character.toString(str.charAt(i));
if (NUMBER.contains(s)) {
count = count + 1;
}
}
if (count == str.length()) {
isNumber = Boolean.TRUE;
}
return isNumber;
}
public static void main(String[] args) {
String text = "12 Test 3 7 text123 1 2 ";
System.out.println(sumOfIntegersFromString(text));
}}
在上面的代碼或新的邏輯,任何優化這將是更優化的歡迎
你完全讀完這個問題了嗎?我是說有類似的問題已經在這裏提到[http://stackoverflow.com/questions/22551574/java-program-to-return-the-sum-of-all-integers-found-in-the-parameter-字符串]引發的異動 – StEcHy
那麼你的問題是什麼? – Steve
我寫的代碼沒有問題。我想爲它優化的解決方案 – StEcHy