@ti1

Как создать метод нахождения суммы элементов массива в Java и вызывать его к различным массивам?

В задаче на подсчитывание времени обслуживания очереди из произвольного клиентов у N касс очередь задается массивом целых чисел int[] customers, где каждый его элемент customers[i] - это время обслуживания i-го клиента.

В процессе решения нужно было просуммировать элементы массива в случае, когда у нас N=1:

.........
        } else if (n == 1) {
            for (int i = 0; i < customers.length; i++ ) {
              sum += customers[i];
            }
        }
.........
return sum;


Однако в ходе решения потребовалось находить суммы элементов еще у двух массивов - nCustomers и restOfCustomers.
Я создаю метод, который позволяет суммировать элементы произвольного массива:

public int sumOfArray(int ary[]) {
    int s = 0;
      for (int i = 0; i < ary.length; i++) {
        s += ary[i];
      }
      return s;
  }


Как мне теперь синтаксически правильно вызывать его ко всем трем массивам в коде - customers, nCustomers и restOfCustomers?
  • Вопрос задан
  • 5334 просмотра
Пригласить эксперта
Ответы на вопрос 2
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Если я правильно понял и вам нужна сумма элементов трёх массивов, то:
int sumOfAll = sumOfArray(arr1) + sumOfArray(arr2) + sumOfArray(arr3)

Или можно создать метод с varargs, который будет считать сумму произвольного количества массивов:
public int sumOfArray(int[]... ary) {
        /// your code
    }

Или считайте через стримы:
int sumOfAll = IntStream.of(arr1).sum() + IntStream.of(arr2).sum() + IntStream.of(arr3).sum();
Ответ написан
leahch
@leahch
3Д специалист. Долго, Дорого, Дерьмово.
Я теперь так делаю
List<String> list  = new ArrayList<>();
		list.add("1");
		list.add("2");
		list.add("4");
		list.add("1");
		
		int summ = list.stream()
				.map(s -> Integer.parseInt(s)) // перевод из String в int
				.reduce( (s1,s2) ->  s1 + s2 ) // сумма
				.orElse(0); // значение по умолчанию
		System.out.println(summ);

Вместо list - используйте свою коллекцию объектов.
А внутри map(....) берите нужное значение поля.

ЗЫю Если с объектами, то вот так можно
public class Reduce {
	public static class Offer {
		int price;
		public Offer (int price) {
			this.price = price;
		}
		
		public int getPrice() {
			return price;
		}
	}
	public static void main(String args[]) {
		List< Offer > list  = new ArrayList<>();
		list.add(new Offer(1));
		list.add(new Offer(2));
		list.add(new Offer(4));
		list.add(new Offer(1));
		
		int summ = list.stream()
				.map(Offer::getPrice) // взять прайс
				.reduce( (s1,s2) ->  s1 + s2 ) // сумма
				.orElse(0); // значение по умолчанию
		
		System.out.println(summ);
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы