将字符串数组中的值相加

时间:2019-02-02 01:41:27

标签: java arrays string sum add

我有一个包含产品和值的字符串数组。这样布置:

ProductA 200
ProductB 50
ProductC 120
ProductD 1100
ProductE 5

我需要找到所有这些数字的总和。我能做的最好的事情就是使用此代码来找到总和,但它正在找到每个数字的总和:

for (char c : rdmPrize.replaceAll("\\D", "").toCharArray())
{
    int digit = c - '0';
    sum += digit;
    if (digit % 2 == 0)
    {
        evenSum += digit;
    }
}

在此示例中,它给我的输出为17,但我需要为1475。

有什么想法吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以通过在字符串上使用split并在索引1处获取值来实现此目的

String[] arr = {"ProductA 200","ProductB 50","ProductC 120","ProductD 1100","ProductE 5"};
    int sum =0;
    for(String s : arr) {
        sum+=Integer.parseInt(s.split(" ")[1]);
    }
    System.out.println(sum);   //1475

通过使用Java-8

int total = Arrays.stream(arr).mapToInt(str->Integer.parseInt(str.split(" ")[1])).sum();

答案 1 :(得分:0)

static Integer sumArray( String[] strArr ) {

    Integer sum = 0;
    for ( String numStr : strArr ) {
        sum += Integer.parseInt( numStr );
    }

    return sum;

}

您可以这样做。

答案 2 :(得分:0)

  1. 按空格分隔字符串
  2. 将值解析为数字
  3. 总和

    String[] rdmprice = {
            "ProductA 200", 
            "ProductB 50", 
            "ProductC 120", 
            "ProductD 1100", 
            "ProductE 5"
    };
    
    BigDecimal result = Arrays.stream(rdmprice)
            .map(i -> new BigDecimal(i.split("\\s+")[1]))
            .reduce(BigDecimal.ZERO, BigDecimal::add);
    
    System.out.printf("Result: %f", result);
    

答案 3 :(得分:0)

按空格分隔每行输入,您将获得一个由空格分隔的字符串数组。然后只需将所需的元素解析为int并将其添加到总和中即可。

// input[0] = the product name string
// input[1] = the number string

int sum = 0;

for (String[] input : rdmPrize.split(" ")) {
    sum += Integer.parseInt(input[1]);
}

System.out.println(sum);