Java 中的 debugging
通过打印你已经有的值来找出错误结果,再修好那一行。在 Yard.java 里写出 int x = 10; 与 int y = 2;。打印 x 和 y。故意写出 int sum = x - y; 并打印 sum。用 javac Yard.java 编译,再运行 java Yard。屏幕应先显示两个值,再显示 8。第二个演示把运算符改成 +,让 sum 打印 12。把 Javadoc 留给下一页——本课是读屏幕、抓住逻辑错误。
打印错误 sum 周围的值
equals 页比较的是字符串文本。本页要抓住一行错误的算术。打开 Yard.java。保持公共类名为 Yard。若残留的 equals / == 演示会淹没 debug 主线,请删掉它们,以及残留的 Machine horn 文件、路径演示和任何键盘 Scanner。程序不得等待输入。不需要 import 行。
在 Yard.main 里先放入数字,并在信任 sum 之前打印它们:
int x = 10;
int y = 2;
System.out.println("x=" + x);
System.out.println("y=" + y);
然后为第一个演示故意保留有 bug 的一行:
int sum = x - y;
System.out.println(sum);
x 和 y 的打印证明输入。打印出的 8 证明这个运算符对 sum 来说是错的。
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 结尾。文件里只保留一个公共类,使名称匹配 Yard。
屏幕先显示 x=10,再显示 y=2,再显示 8。把这次运行走一遍。Java 从 Yard.main 开始。前两行打印确认已保存的数字。第三行打印显示的是减法结果,不是加法。程序已编译并运行——这是逻辑错误,不是漏写分号。
在屏幕旁用纸算一次:十减二等于八。与最后一行一致,所以 bug 不是变量值错了;bug 是你为 sum 选的运算符。当打印出的输入看起来正确、结果却不对时,去找构建该结果的表达式。
若你仍看到 equals 文件留下的 true / false,请切到 debugging 教学文件并再次运行 java Yard。若你不打印 x 和 y 就改运算符,那是在黑暗里猜。保留值打印,直到屏幕与你对输入的预期一致。排查时保留临时标签;确认修好后再整理它们。
看着屏幕把规则说出来:打印事实,读出错误结果,再改造成它的那一行。本页不要把 Javadoc 注释块当作修复手段。Javadoc 留给下一课。
修好运算符并再次运行
第二个程序保留相同的 x 和 y 打印。sum 那一行用 + 代替 -。最后一行打印应显示 12。
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。输入没有变。运算符变了。这就是本入门形状的 debug 循环:看见值,认出错误运算,修好它,再编译,再运行。
再读一遍 sum 行:int sum = x + y;。保留带标签的打印,以便之后出错时仍能看见输入。当最后那个数与 10 + 2 一致时,本演示的逻辑行就修好了。若两个教学文件都开着,并排对照:唯一有意的差别应是 sum 行上的 - 与 +。
若附近仍有 equals 演示,把它们当作历史保留。本课请运行 debugging 教学文件,让屏幕显示数字,而不是字符串 boolean。若 javac 抱怨重复的公共类,只让 Yard 保持 public。
简短 debug 清单
这张表是本页的短地图。先看。再打印。再改清楚的一行并验证。不要无屏幕就猜。在确认修复有效之前,不要删掉全部打印。
📊 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,保留减号 bug,并在标签之后看到 8。你可以把运算符改成加号并看到 12。对每个保留的演示依次编译 Yard.java 并运行 java Yard。屏幕告诉你逻辑在哪里失败。下一页是 Javadoc,你在那里用特殊注释为读者和工具记录方法。
保留有 bug 的演示,做清晰的错误屏幕。保留修好的演示,做清晰的验证步骤。把 Javadoc 文件留在本页之外。这三条习惯是继续前进前的检查点。当带标签的打印加上改正后的 sum 与 10 + 2 一致时,debugging 完成本课任务,你已准备好进入下一主题 Javadoc。
再过一遍文件夹:一个公共 Yard、sum 周围的值打印、无键盘等待、无强制文档注释。对你保持打开的演示再运行一次 javac Yard.java 与 java Yard。若屏幕仍显示你期望的输入与结果,debug 循环就扎实了,课程可在下一页进入 Javadoc。每次优先做一个清楚的修复,让每次新运行只教一个变化。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部