Skip to main content

FAQ

课程组会根据大家提出的项目问题不断更新此页面! 如果你有任何问题在此处找不到答案,请在实验课、答疑时间或者Ed上提问!


设置

IntelliJ 提示 “不支持 release version 18”

打开 File > Project Structure > Project Settings > Project, 确认 Language level 设置为 17。 然后,进入 Modules, 确认 proj0 的 Language level 也设置为 17。


入门

感觉代码量很大。 我们怎么才能知道自己写的是否正确呢?

这就是测试! 我们通常用两种方法来测试代码:单元测试和集成/验收测试。 单元测试旨在测试程序中的各个代码片段——通常是单个方法。 集成/验收测试则是测试整个程序的功能,包括各个类之间的交互以及如何处理用户输入。

这是项目规范里关于测试的部分。 这个项目里,我们提供了所有用于评分的测试。 你会用 JUnit 运行这些测试。 你可以在 IntelliJ 里运行每个测试类,它会显示哪些测试通过了,哪些失败了,以及期望的输出和你实际输出的对比。 这对于调试非常有用。 一般来说,先看看哪些测试没通过,了解一下期望的输出是什么,然后和你的实际输出做个对比。 如果卡住了,可以用调试器一步步地调试。 你甚至可以按照我们提供的格式自己写测试! 这是个好习惯,因为之后的作业也会要求你们这么做 (而且实际工作中也需要自己写测试)。

改编自 Shreyas Kallingal。

TestAtLeastOneMoveExists

除了 testAnyDirTestAtLeastOneMoveExists 里的其他测试我都通过了。 如果我的代码在每个方向上都有效,为什么在 testAnyDir 这个测试里会出错呢?

如果你在循环遍历棋盘上的坐标,要确保你考虑了所有可能的比较情况。 比如,你的 for 循环里的边界条件可能差一位。


tilt

我不知道如何开始 tilt

可以看看 Josh 关于这个方法的介绍视频! 不过,因为改动比较大,视频里的方法可能和现在的代码不太一样。