Как исключить последний инкремент?

Доброй ночи. Не совсем обычный вопрос: программа вычисляет сколько коробок(containers) потребуется для новогодних подарков(boxes).Проверка происходит одним линейным циклом for.Как только количество подарков в коробке превышает максимальную вместимость коробки, количество коробок увеличивается на 1. Казалось бы, задача совсем простая, но есть одна заноза:

public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int boxes = scanner.nextInt();
        int container = 1;
        int maxBoxesInContainer = 16;// макс. подарков в коробке

        System.out.println("\tКонтейнер: " + container);

        for (int i = 1; i <= boxes; i++) {
            System.out.println("\t\tЯщик: " + i);
            if (i % maxBoxesInContainer == 0) {
                container++;
                System.out.println("\tКонтейнер: " + container);
            }
        }
        System.out.println("Необходимо:" + "\nконтейнеров - " + container + " шт.");
    }

При введении числа подарков кратного максимальному(т.е. 16 , 32 , 48 и т.д.) программа выдает количество контейнеров на 1 больше требуемого,хотя после этого ничего не печатает. Вот пример output для 16 коробок:

    Ящик: 15
        Ящик: 16
    Контейнер: 2
Необходимо:
контейнеров - 2 шт.

Хотя правильный ответ 1 контейнер. Не могли бы вы подсказать,как отредактировать последний ненужный инкремент в if?


Ответы (1 шт):

Автор решения: Igor
if (i % maxBoxesInContainer == 0 && i != boxes) {
→ Ссылка