Какое исключение это должно быть?JUnit test Ошибка подтверждения - PullRequest
0 голосов
/ 10 мая 2018

Пожалуйста, помогите мне разобраться в этом деле.Я изучал Java некоторое время назад, и я не понимаю много моментов.Моя программа имеет входной список.Он преобразует этот список в двумерный массив и строит внутри массива пильный треугольник, подобный / \, с наименьшим числом сверху и слева направо и возвращает его обратно.Также мне нужно создать новый класс для обработки ошибок

private static int[] countSize(int listSize){
    int rows = 0;
    int columns = 0;
    for(int x=1, y=0; x+y<=listSize; x=x+y, y++, rows++);
    columns = 2*rows-1;
    return new int[] { rows, columns };
}


private static int[][] buildTriangle(List<Integer> list) throws myException{
    if(!list.isEmpty()&&!list.contains(null)&&(list.size()<Integer.MAX_VALUE - 8))
    {
        ArrayList<Integer> workList = new ArrayList<>();
        workList.addAll(list);
        Collections.sort(workList);
        int[] sizes = countSize(list.size());
        int[][] resArray = new int[sizes[0]][sizes[1]];

       //...sort logic...

        System.out.println();
            for(int x=0; x<sizes[0]; x++) {
                for (int y=0; y<sizes[1]; y++)
                    System.out.print("\t" + resArray[x][y] + " ");
                System.out.println();
            }

        return resArray;
    }
    else throw new myException("Input is incorrect");
    }

public int[][] buildPyramid(List<Integer> input) {
    try{
        return buildTriangle(input);
    } catch (myException e) {
        throw new myException();
    }
}

и класса обработки исключений

public class myException extends RuntimeException {
    public myException(String message) {
    super(message);}
}

, когда x равно 256 (или некоторому другому числу, например 10000) или больше, показывает тест JUnitошибка утверждения, потому что она ожидает исключения.Я не понимаю, какие исключения могут быть вызваны такими данными?Я также рад услышать комментарии к коду

Вот результат для 7 элементов ввода

0 0 0 1 0 0 00 0 2 0 3 0 00 4 0 5 0 6 07 0 0 0 0 0 0

1 Ответ

0 голосов
/ 10 мая 2018

Я предполагаю, что «способность строить пирамиду» означает «база должна быть заполнена». Это касается 1, 3, 6, 10 и т. Д.

Определите шаблон для этой серии и проверьте, подходит ли данный вам список, в противном случае выведите исключение.

Вот список, который не подходит: {1,2,3,4,5,6,7}.

Выходной массив:

00100

02340

56700

Видите, это не правильная пирамида?

...