Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java添加字符串的所有整数值?_Java_Sum - Fatal编程技术网

如何使用java添加字符串的所有整数值?

如何使用java添加字符串的所有整数值?,java,sum,Java,Sum,这里我在Result中得到的值是:12345122,但我需要计算所有值的总和,即20。您可以像这样使用正则表达式: String something = "123e45,j, _122"; int length = something.length(); String result = ""; for (int i = 0; i < length; i++) { Character ch

这里我在Result中得到的值是:12345122,但我需要计算所有值的总和,即20。

您可以像这样使用正则表达式:

String something = "123e45,j, _122";
            int length = something.length();
            String result = "";
            for (int i = 0; i < length; i++) {
                Character character = something.charAt(i);
                if (Character.isDigit(character)) {
                    result += character;
                }
            }
//            out.println("result is:"+result);

您可以继续使用循环并使用

将结果类型更改为int

将字符解析为整数。如果仅将字符强制转换为整数,则将此字符的ascii值添加到结果中

public static void main(String[] args) {
    String s = "123e45,j, _122";
    int val = 0;
    Pattern p = Pattern.compile("\\d"); // match single digit
    Matcher m = p.matcher(s);
    while (m.find()) {            // for all digits
        val = val + Integer.parseInt(m.group()); // covert each String (digit) into numeric value and add to count

    }
    System.out.println(val);
}

O/P :
20
输出:结果为:20

//out.printlnresult为:+sum


这很有效。sum是一个整数,现在您可以使用它来执行计算,也可以使用:String result=String.valueOfsum

虽然其他人的解决方案会在一些库和包装器的帮助下获得所需的结果,但我认为,一旦您了解了这段代码中发生的事情,您对其他代码段的基本理解也会增加

String something = "123e45,j, _122";
        int length = something.length();
        int sum=0;
        for (int i = 0; i < length; i++) {
            Character character = something.charAt(i);
            if (Character.isDigit(character)) {
                sum+= Integer.parseInt( Character.toString(character) );
            }
        }

简言之:对于字符串的每个索引,通过检查字符值是否在0和9之间来检查字符是否为数字。如果是,通过减去0 0=48和9=57的ASCII值,将其转换为整数值,如果我们减去48到48,则得到0,57-48=9

@peter.petrov,在结果字符串中,我有12345122,我需要计算所有整数的和1+2+3+4+5+1+2+2=20,这完全不符合主题。但是我想知道为什么我需要为一个方法导入一个全新的外部jar/API,而我自己只需要几行代码就可以完成。在这种情况下,不需要使用更多的Apache Commons。@user3505725-为什么这是离题的?为什么要使用库,因为有一个“不要重复自己”的原则。但如果你愿意,你可以为自己重新发明轮子-@donhuvy是的,这是不必要的,但如果你愿意,你可以使用它。被接受的答案是使用Character的方法来实现的。@EelLee…你为什么认为它只是为了几行代码而重新发明轮子…如果我的要求是只有一个函数,代码少于10行,我可以自己编写,为什么我要为一个方法将整个jar文件导入到我的项目中呢。
String something = "123e45,j, _122";
        int length = something.length();
        int sum=0;
        for (int i = 0; i < length; i++) {
            Character character = something.charAt(i);
            if (Character.isDigit(character)) {
                sum+= Integer.parseInt( Character.toString(character) );
            }
        }
int sumString(String some) {
    int sum = 0;
    for (int i = 0; i < some.length(); i++)
        sum += (some.charAt(i) >= '0' && some.charAt(i) <= '9') ? (some.charAt(i) - '0') : 0; 
    return sum;
}