-1
package lessonThree;

public class HomeWorkThree {
    public static void main(String[] args) {
        int c = 0;
        for (int a = 1; a < 8; a++) {
            if (a <= 1) {
                System.out.println(" Понедельник ");
            } else if (a <= 2) {
                System.out.println(" Вторник ");
            } else if (a <= 3) {
                System.out.println(" Среда ");
            } else if (a <= 4) {
                System.out.println(" Четверг ");
            } else if (a <= 5) {
                System.out.println(" Пятница ");
            } else if (a <= 6) {
                System.out.println(" Суббота ");
            } else if (a <= 7) {
                System.out.println(" Воскресенье ");
            }
            for (int b = 1; b < 5; b++) {
                if (b <= 1) {
                    System.out.println(" Ночь ");
                } else if (b <= 2) {
                    System.out.println(" Утро ");
                } else if (b <= 3) {
                    System.out.println(" День ");
                } else if (b <= 4) {
                    System.out.println(" Вечер ");
                }
                do {
                    c += 1;
                } while (c > 24);
                if (c >= 24)
                    break;
                for (int d = 0; d < 60; d++) {
                    if (d > 60)
                        break;
                    System.out.println(" День недели " + a + " Время суток " + b + " Часы " + c + " Минута " + d);
                }
            }
        }
    }
}

Цикл начал уходить в минус часах, будьте добры подскажите как исправить.

  • Отладочку включите и посмотрите проблемы – Алексей Шиманский Nov 06 '21 at 07:09
  • Какая из переменных уходит в минус? Зачем нужен while (c > 24)? – Klim Postironin Nov 06 '21 at 07:19
  • Мне надо показать как в предыдущих циклах что на 23 часах 59 минутах цикл заканчивается, а у меня выходит День недели 7 Время суток 1 Часы -2147483648 Минута 0. – Marquse90 Nov 06 '21 at 07:21
  • Я просто не понимаю почему оно так выходит, поэтому и спросил вопрос. Мне не нужно чтобы кто то за меня все делал, просто показали где я не правильно ввел, чтобы я в будущем не совершал ошибки. – Marquse90 Nov 06 '21 at 07:23
  • Сделай отладку кода!!! – Алексей Шиманский Nov 06 '21 at 07:25
  • Код корявый. Надо переписать правильно – Arty Morris Nov 06 '21 at 07:30

1 Answers1

2

ошибка в том, что слишком много вложенности и крайне проблематично разобраться что там и как, и даже в дебагере такое сложно отловить, так что старайтесь избегать подобного стиля кодирования...

у вас в определённый момент переменная с зацикливается и происходит переполнение, у int фиксированный размер от — 2 147 483 648 до 2,147,483,647 и когда значение в переменной подходит к границе положительных значений оно перескакивает на отрицательное.

  byte b = 127;
        System.out.println(++b);

вывод будет -128

у вас проблема вот в этом блоке

 do {
            c += 1;
        } while (c > 24);
        if (c >= 24) {
            break;
        }  

инкремент и условие выхода в разных блоках. можно попробывать перенести проверку в блок do (но это изменение некоректно делает вывод, проблема большой вложенности)

         do {
                c += 1;
                if (c >= 24)
                    break;
            } while (c > 24); 

если вообще убрать блок do вроде работает нормально.

while (c++ > 24);
   if (c >= 24)
        break;

в идеале этот код надо переписывать, попробуйте заменить блоки if на switch