Загрузка...

debugging в Java

Находите неверный результат, печатая значения, которые уже есть, затем исправляйте плохую строку. В Yard.java задайте int x = 10; и int y = 2;. Напечатайте x и y. По ошибке вычислите int sum = x - y; и напечатайте sum. Скомпилируйте через javac Yard.java и запустите java Yard. Экран должен показать два значения, затем 8. Вторая демо меняет оператор на +, чтобы sum печатал 12. Javadoc оставьте для следующей страницы — этот урок про чтение экрана, чтобы поймать логическую ошибку.

Печатайте значения вокруг неверной суммы

Страница equals сравнивала текст строк. Эта страница охотится за плохой арифметической строкой. Откройте Yard.java. Держите имя public-класса Yard. Удалите оставшиеся демо equals / ==, если они хоронят историю отладки, оставшиеся файлы horn у Machine, демо путей и любой клавиатурный Scanner. Программа не должна ждать ввода. Строка import не нужна.
Внутри Yard.main задайте числа и напечатайте их, прежде чем доверять сумме:
int x = 10;
int y = 2;
System.out.println("x=" + x);
System.out.println("y=" + y);
Затем для первой демо намеренно оставьте баговую строку:
int sum = x - y;
System.out.println(sum);
Печати x и y подтверждают входы. Напечатанная 8 подтверждает, что оператор для суммы неверен.

Yard debug prints with minus bug

java
public class Yard {
    public static void main(String[] args) {
        int x = 10;
        int y = 2;
        System.out.println("x=" + x);
        System.out.println("y=" + y);
        int sum = x - y;
        System.out.println(sum);
    }
}

Из папки, где лежит Yard.java, запустите javac Yard.java. Когда скобки, фигурные скобки и точки с запятой совпадают, javac не пишет собственной строки. Затем запустите java Yard — не java Yard.java. Уберите окончание .java из команды запуска. Держите один public-класс в файле, чтобы имя совпадало с Yard.
Экран показывает x=10, затем y=2, затем 8. Пройдите запуск один раз. Java начинает с Yard.main. Первые две печати подтверждают сохранённые числа. Третья печать показывает результат вычитания, а не сложения. Программа скомпилировалась и запустилась — это логическая ошибка, а не пропущенная точка с запятой.
Один раз посчитайте на бумаге рядом с экраном: десять минус два — восемь. Это совпадает с последней строкой, значит баг не в неверном значении переменной; баг в операторе, который вы выбрали для суммы. Когда напечатанные входы выглядят верно, а результат — нет, ищите выражение, которое построило результат.
Если вы всё ещё видите true / false из файла equals, переключитесь на учебный файл debugging и снова запустите java Yard. Если меняете оператор без печати x и y, вы гадаете в темноте. Держите печати значений, пока экран не совпадёт с тем, что вы ожидаете от входов. Оставляйте временные метки, пока ищете; навести порядок можно после того, как исправление доказано.
Произнесите правило вслух, глядя на экран: печатайте факты, читайте неверный результат, затем меняйте строку, которая его вызвала. Не изобретайте блок комментария Javadoc как исправление на этой странице. Javadoc ждёт следующего урока.

Исправьте оператор и запустите снова

Вторая программа держит те же печати x и y. Строка суммы использует + вместо -. Последняя печать должна показать 12.

Yard fixed plus sum

java
public class Yard {
    public static void main(String[] args) {
        int x = 10;
        int y = 2;
        System.out.println("x=" + x);
        System.out.println("y=" + y);
        int sum = x + y;
        System.out.println(sum);
    }
}

Скомпилируйте через javac Yard.java, затем запустите java Yard. Экран показывает x=10, затем y=2, затем 12. Входы не изменились. Оператор изменился. Это цикл debugging для этой начинающей формы: увидеть значения, заметить плохую операцию, исправить, снова скомпилировать, снова запустить.
Прочитайте строку суммы ещё раз: int sum = x + y;. Держите печати с метками, чтобы поздняя ошибка всё ещё показывала входы. Когда последнее число совпадает с 10 + 2, логическая строка для этой демо исправлена. Сравните два учебных файла рядом, если оба открыты: единственное намеренное отличие должно быть - против + на строке суммы.
Если рядом ещё лежат демо equals, оставьте их как историю. Для этого урока запускайте учебный файл debugging, чтобы экран показывал числа, а не boolean строк. Если javac жалуется на дублирующие public-классы, держите public только у Yard.

Короткий чеклист debugging

Таблица — короткая карта этой страницы. Сначала смотрите. Затем печатаете. Затем меняете одну ясную строку и проверяете. Пропускайте гадание без экрана. Не удаляйте все печати, пока не знаете, что исправление сработало.

📊 Beginner debug steps on Yard

Step What you do
1 Run java Yard and read every printed line
2 Add println for the values you distrust
3 Fix the bad operator or condition, then compile and run again

Сравнение с проверками equals

На странице equals equals и == отвечали про содержимое против идентичности для строк. На этой странице println отвечает, каковы ваши числа на самом деле, когда результат выглядит неверно. Вы по-прежнему компилируете Yard.java и запускаете java Yard. Новые привычки — печати значений с метками, чтение неверного результата как подсказки и повторный запуск после однострочного исправления.
Debugging здесь — не особое меню. Это обычный вывод, используемый как фонарик на ваши собственные переменные. Когда фонарик показывает хорошие входы и плохой результат, подозреваемое — выражение, которое построило результат.
Если ещё открыт файл a.equals(b), вы увидите true и false. Переключитесь на файл debugging, чтобы main печатал x, y и sum. Держите демо Javadoc вне этой страницы. Держите клавиатурный ввод вне этой страницы.

Перед Javadoc

Вы можете напечатать x и y, оставить баг с минусом и увидеть 8 после меток. Вы можете сменить оператор на плюс и увидеть 12. Скомпилируйте Yard.java и запустите java Yard для каждой сохранённой демо по очереди. Экран сказал, где логика сломалась. Следующая страница — Javadoc, где вы документируете методы особыми комментариями для читателей и инструментов.
Держите баговую демо для ясного неверного экрана. Держите исправленную демо для ясного шага проверки. Держите файлы Javadoc вне этой страницы. Эти три привычки — контрольная точка перед переходом. Когда печати с метками плюс исправленная сумма совпадают с 10 + 2, debugging сделал своё дело для этого урока, и вы готовы к следующей теме о Javadoc.
Ещё один проход по папке: один public Yard, печати значений вокруг суммы, без ожидания клавиатуры, без принудительных комментариев документации. Ещё раз запустите javac Yard.java и java Yard на демо, которую держите открытой. Если экран всё ещё показывает входы и ожидаемый результат, цикл debugging крепок, и курс может перейти к Javadoc на следующей странице. Предпочитайте одно ясное исправление за раз, чтобы каждый новый запуск учил одно изменение.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
5
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху