欢迎回到知识城课程 关于 Java 编程。 我是克里夫·布罗佐,我是你的导师。 而在今天的课程中, 我们将学习调试程序。 如果你还记得,这是我们刚刚检查的程序 涉及 switch 语句的那个 和 if 语句 甚至拉出日历月。 在这个程序中,我插入了一堆错误 我们上次编译它时没有 这次让我们运行它,看看会发生什么。 我得到的第一个错误指向第 17 行 在底部,它说 main.java 17 它告诉我我犯了一个错误 这不是一个声明。 它感兴趣的语句是 scan.close。 在这种特殊情况下, 我们需要理解的是 close 是一个函数 并且所有功能都必须结束 带有左括号和右括号。 所以这不是一个声明的事实 真的意味着我需要进去 在关闭这个词之后 并放入左括号和右括号。 现在,调试程序的技巧 是一次只进行一项更改。 即使你看到了错误的东西, 等到编译器告诉你 你犯了一个错误。 如果改动太多, 你可能会改变一些正确的东西 并把它变成不正确的东西。 所以我们一次做一个改变。 让我们重新编译。 它现在指向第 52 行,我向下滚动到第 52 行, 它说差异 == 你的月 - 月 + 1。 在这个错误中,我们必须记住 等号之间有区别 和等号。 平等的平等测试 而单个等号 将一个值放入等式的左侧。 在这种情况下, 我唯一一次使用双等号 带有 if 语句或 while 语句 在所有其他事件中, 我想使用一个等号 我将采用这个计算的结果 那是你的月份减去月份,再加一, 并将其放在变量差异中。 我这样做的方式是使用一个相等的。 正如我们所说,一个改变并重新编译, Java 第 66 行说这是一个错误 它在解析时到达了文件的末尾。 这里发生了什么 是我缺少一个大括号 IDE 试图帮助我们 通过将这些垂直线放入 这有助于我们排列这些括号。 如果我一直跟着这个, 我可以看到那个关闭是对应的 到我的 public static void main String Args 例程。 看看第四行,我有一个开放的 并且没有相应的关闭。 所以当编译器正在经历 并检查所有代码,它到达文件末尾。 它没有找到一个封闭的大括号。 所以我会放一个,我想我会完成的 因为只剩下一个错误,但我错了。 我把它放进去,它仍然说同样的话。 嗯,这是一件有趣的事情 因为我刚刚修复了那个代码 它给了我同样的错误。 发生这种情况时,您必须返回查看并检查 确保所有的开括号 有相应的右括号。 我要去程序的顶部。 我有一个打开,我有两个打开,第四行和第六行, 第 23 行打开了 switch 语句。 我跟着这些线下来 我看到 switch 语句没有关闭。 所以 Java 不知道,Java 知道什么 是右括号的数量不均匀。 它说我到达了文件的末尾 我没有找到结束括号。 所以我要再放一个,我想我已经完成了。 哦,不,我不是。 我修正了那个错误 现在我有一、二、三、四、五、六、七 八、九,几乎每一行都变成了错误。 这就是你开始恐慌的地方。 当我只有一个错误时,我有 20 个错误。 这是怎么发生的? 嗯,电脑不知道 每行的详细信息,直到完成 通过整个程序, 确保你所有的日常工作 正确打开和关闭。 所以当它上次编译并告诉我我有一个错误时, 我把那个错误输入了,现在它说没问题, 我要进去单独查看每一行。 所以这就是我们现在必须做的。 我的第一行对我说, 第三行,公共课主要。 班级主要是公开的, 它应该在名为 main Java.js 的文件中声明。 嗯,这是一个指示,主要 Java 是文件应该命名的指示。 但就我而言,我有一个名为 Main.java 的文件 用大写 M。 所以它告诉我这个 M 必须是大写的。 所以我会输入一个大写的 M。 正如我所说,即使我知道我还有 19 个错误, 我要重新编译 因为一次更改可能会产生多个错误。 现在它让我回到第一行 它说,错误找不到符号。 还有这里的小指针 也就是说,这就是它搞砸的地方。 它正在寻找扫描仪类的符号。 在这种特殊情况下, 好吧,我没有用大写的 S 拼写扫描仪 大小写很重要。 我把它设为大写的 S,重新编译。 现在它告诉我,第 15 行告诉我 它找不到符号 Scanner.nextInt, 它正在寻找并且没有扫描仪这样的东西。 我命名我的扫描仪扫描,而不是扫描仪。 所以正确的代码是说,Scan.nextInt。