2011-08-18 29 views
1

我需要從一個字符串中添加8個數字。例如,如果有人輸入1234,它會將數字加在一起1 + 2 + 3 + 4 = 10然後1 + 1 = 2。我已經完成了這個目標。我無法弄清楚如何使用for循環添加這些數字。Java,將字符串轉換爲整數,然後將所有整數加在一起

String num2;  
String num3; 
num2 = (jTextField1.getText()); 
num3 = num2.replaceAll("[/:.,-0]", ""); 

String[] result = num3.split(""); 

int inte = Integer.parseInt(num3); 

for (int i = 0; i < 8; i++){ 

// Stuck 

} 
+6

實際上'1 + 2 + 3 + 4' =' 10'。 –

+0

使用+運算符... –

+2

'1 + 1 = 1'?奇怪;) –

回答

6

怎麼樣(我跳過例外...):

String[] sNums = jTextField1.getText().replaceAll("[^1-9]", "").split("(?<!^)"); 
int sum = 0; 
for (String s : sNums) { 
    sum += Integer.parseInt(s); // add all digits 
} 

while (sum > 9) { // add all digits of the number, until left with one-digit number 
    int temp = 0; 
    while (sum > 0) { 
     temp += sum % 10; 
     sum = sum/10; 
    } 
    sum = temp; 
} 
+0

這是一個完整的解決方案。 +1。 – Perception

+0

非常酷的解決方案!我一直都有數字根源的東西,整齊地用代碼來完成。 –

+0

@Perception和G_H - 謝謝! – MByD

0

對於結果的每一個元素,你需要將其轉換爲int,然後將其添加到一些變量,也許叫和。

int sum = 0; 

// for every String in the result array 
for (int i = 0; i < BOUND; i++) { 
    // convert s[i] to int value 
    // add the int value to sum 
} 
0

此僞代碼應該這樣做而不破,數組等等

String s = "1234.56"; 
int sum = 0; 
int i = 0; 
while (i < s.length()) { 
    char c = s.charAt(i) 
    if (c >= '0' && c <= '9') sum += c - '0'; 
    i++; 
} 

應導致總和= 21

0
public static int addAll(String str) { 
    str = str.replaceAll("[^1-9]", ""); 
    if (str.length() == 0) 
     return 0; 
    char[] c = str.toCharArray(); 
    Integer result = c[0] - 48; 
    while (c.length > 1) { 
     result = 0; 
     for (int i = 0; i < c.length; i++) { 
      result += c[i] - 48; 
     } 
     c = result.toString().toCharArray(); 
    } 
    return result; 
}