【问题标题】:Add the values from an array of strings together将字符串数组中的值相加
【发布时间】:2019-02-02 01:41:27
【问题描述】:

我有一个字符串数组,其中包含产品和值。布局如下:

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。

有什么想法吗?

谢谢!

【问题讨论】:

  • 它给你 17,因为你添加的是数字,而不是数字。 2 + 5 + 3 + 2 + 5 = 17,使用 Integer.parseInt 然后对数字求和。
  • 使用String.split将每一行拆分为2个token,将第二个token转换为一个数字并求和。

标签: java arrays string sum add


【解决方案1】:

您可以通过在字符串上使用 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();

【讨论】:

    【解决方案2】:
    static Integer sumArray( String[] strArr ) {
    
        Integer sum = 0;
        for ( String numStr : strArr ) {
            sum += Integer.parseInt( numStr );
        }
    
        return sum;
    
    }
    

    你可以这样做。

    【讨论】:

      【解决方案3】:
      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);
        

      【讨论】:

        【解决方案4】:

        用空格分割每个输入行,你会得到一个空格分隔的字符串数组。然后只需将所需元素解析为 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);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-12
          • 1970-01-01
          • 2020-06-26
          • 1970-01-01
          • 2019-09-13
          • 1970-01-01
          • 2015-11-12
          • 1970-01-01
          相关资源
          最近更新 更多