Я столкнулся с проблемой при компиляции этого кода, как показано ниже:
int[][] result = Arrays.stream(board)
.map(r -> IntStream.range(0, board[0].length)
.map(i -> IntStream.range(0, board.length).map(j -> decideAliveOrDied(i, j, board)))
.toArray())
.toArray(int[][]::new);
Плата является входной матрицей, в которой мы можем выполнить некоторое преобразование. Метод defineAliveOrDied (int i, int j, int [] [] board) преобразует ячейку каждой входной матрицы в другую ячейку для заданного индекса строки i, индекса столбца j и платы матрицы. Матрица result является выходом всей модификации на матрице board .
Для получения дополнительной информации, это мой метод defineAliveOrDied :
public int decideAliveOrDied(int i, int j, int[][] board) {
int result = 0;
ArrayList<Integer> list = getNeighbors(i, j, board[0].length, board.length, board);
int numberOfLiveCell = (int) list.stream().filter(number -> number == 1).count();
if (board[i][j] == 1 && numberOfLiveCell < 2) {
result = 0;
}
if (board[i][j] == 1 && (numberOfLiveCell == 2 || numberOfLiveCell == 3)) {
result = 1;
}
if (board[i][j] == 1 && numberOfLiveCell > 3) {
result = 0;
}
if (board[i][j] == 0 && numberOfLiveCell == 3) {
result = 1;
}
return result;
}
Но я получаю ошибку компиляции, как описано ниже:
- Type mismatch: cannot convert from IntStream to int
- The method map(IntUnaryOperator) in the type IntStream is not applicable for the arguments ((<no
type> j) -> {})
Заранее спасибо за помощь.