Добрый день!
Тренируюсь решать задачи через stream-ы. Не принимает решение валидатор. Ошибку никак найти не могу. Я в стримах где-то ошибся?
Через циклы делать не хочется :) Практики работы со stream пока маловато.
package com.javarush.games.minigames.mini04;
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
import java.util.Optional;
import java.util.stream.IntStream;
import java.util.stream.Stream;
/*
Считаем клетки
*/
public class CountGame extends Game {
@Override
public void initialize() {
setScreenSize(10, 10);
showGrid(false);
for (int j = 0; j < 50; j++) {
int x = getRandomNumber(10);
int y = getRandomNumber(10);
setCellColor(x, y, Color.GREEN);
setCellNumber(x, y, getRandomNumber(100));
}
showResult();
}
public void showResult() {
Stream<int[]> numbersStream = IntStream.range(0, 10)
.boxed()
.flatMap(x -> IntStream.range(0, 10)
.mapToObj(y -> new int[]{x, y}));
Stream<Integer> cellNumberStream = numbersStream
.map(xy -> getCellNumber(xy[0], xy[1]));
Optional<Integer> cellNumberSum = cellNumberStream.reduce((x, y) -> x + y);
long greenColorCount = IntStream.range(0, 10)
.boxed()
.flatMap(x -> IntStream.range(0, 10)
.mapToObj(y -> new int[]{x, y}))
.map(xy -> getCellColor(xy[0], xy[1]))
.filter(color -> color.equals(Color.GREEN))
.count();
printSum(cellNumberSum.get());
printCountOfGreenCells((int)greenColorCount);
}
private void printSum(int sum) {
System.out.println("Сумма всех чисел = " + sum);
}
private void printCountOfGreenCells(int count) {
System.out.println("Количество зеленых клеток = " + count);
}
}