Добавьте значения из массива строк вместе - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть массив строк с продуктами и значениями в нем.Выложено так:

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 голосов
/ 02 февраля 2019

Вы можете сделать это, используя 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();
0 голосов
/ 02 февраля 2019
  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);
    
0 голосов
/ 02 февраля 2019

Разделив каждую строку ввода на пробел, вы получите массив разделенных пробелами строк.Затем просто проанализируйте нужный элемент в 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);
0 голосов
/ 02 февраля 2019
static Integer sumArray( String[] strArr ) {

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

    return sum;

}

Вы можете сделать это так.

...