2017-05-08 38 views
0

我需要对给定字符串中的所有数字进行求和。因此,对于我这有计算给定字符串中的数字

public static void main(String[] args) { 

    Scanner odczyt = new Scanner(System.in); 
    System.out.println("Input string"); 
    String ciag = odczyt.nextLine(); 

    int suma = 0; 

    for (int i = 0; i < ciag.length(); i++) { 
     if (Character.isDigit(ciag.charAt(i))) { 
      suma += ciag.charAt(i); 
     } 
    } 
    System.out.println(suma); 
} 

当我输入:

“阿拉有3个苹果和1个橙色”

输出为100,而不是4.我应该怎么改变以使其仅计数数字?

+0

如果那是“Ala得到13个苹果和1个桔子”,你会需要14或5吗?换句话说,它是否应该单独处理数字? –

+0

是的,每个数字都应该自己添加。 –

回答

5

问题发生在这里:

suma += ciag.charAt(i); 

您要添加的字符代码,而不是数字本身。

它改成这样:

suma += Integer.parseInt(ciag.charAt(i)+""); 
1

那是因为你要添加的数字的ASCII码。只需从char数中减去'0',如下所示:

suma + = ciag.charAt(i) - '0';

+0

这个想法是对的。最好使用'Character.getNumericValue(ciag.charAt(i))'。 –