@aversys
учу java

При каком условии должен завершиться массив?

Пишу метод который должен равномерно разбить лист на количество строк двумерного массива. Какое условие должно быть для break; что бы массив вывел все значения?
public class  ConvertList2Array {
    public int[][] toArray(List<Integer> list, int rows) {
        int cells = list.size() / rows == 0 ? list.size() / rows : (list.size() / rows) + 1;
        int[][] array = new int[rows][cells];
        int row = 0;
        int colum = 0;
        for (int i : list) {
            array[row][colum++] = i;
            if (i == rows) {
                colum = 0;
                row++;
            } else if (??) {
                break;
            }
        }
        return array;
    }
}
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
RATlius
@RATlius
Разработчик Android
У Вас 2 ошибки в коде:
1 - Не верно проверяется количество ячеек. Нужно вот так:
int cells = list.size() % rows == 0 ? list.size() / rows : (list.size() / rows) + 1;

2 - Вам вообще блок "else if{}" - не нужен

P.S. Упрощенная реализация Вашего метода:
public class  ConvertList2Array {
    public int[][] toArray(List<Integer> list, int rows) {
        int cells = list.size() % rows == 0 ? list.size() / rows : (list.size() / rows) + 1;
        int[][] array = new int[rows][cells];
        int index = 0;
        for (int c=0; c<cells; c++) //проход по столбцу
            for (int r=0; r<rows; r++) //проход по строкам
                array[r][c] = index++
                if (index == list.size()) break; //проверка на выход за предел list
        return array;
    }
}
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы