如何调试IntelliJ中的逻辑错误

时间:2017-06-25 02:06:29

标签: java debugging intellij-idea

我正在学习Java,现在只是在调试。然而,它只是出现在我的脑海中,正在寻找一种解决方案来解决如何在IntelliJ中调试逻辑错误(也许这就是所谓的!)。例如:

public static void main(String[] args) {
        int  hour, minute;
        hour = 10;
        minute = 30;

        System.out.println("The total number of minutes is " + 60 * hour + minute);
}

你可以看到我在这里犯了一个错误,应该是:

System.out.println("The total number of minutes is " + (60 * hour + minute));

或者

System.out.println(60 * hour + minute + " is the total no. of minutes.");

但如果我必须编写更大的程序,那么我应该如何在IntelliJ中调试它?

注意: 我编辑了这个问题。我在几分钟内得到了投票以及一些有用的答案。也许我不清楚这个问题,或者Stackoverflow不适合初学者。

2 个答案:

答案 0 :(得分:0)

问题的一个方面是演示与计算的混合。因此,很难调试结果,也无法为其编写测试用例。

而不是:

System.out.println("The total number of minutes is " + 60 * hour + minute);

最好有一种方法:

public int calculateMinutes(int hours, int minutes)
{
   //perform calculations
}

然后,可以编写一系列具有针对该方法的已知值的测试用例,并且合理地期望结果是正确的。然后,一个 可以做类似的事情(使用OP问题中的小时,分​​钟):

int totalMinutes = calculateMinutes(hour, minute);
System.out.println("The total number of minutes is " + totalMinutes);

通过这种方式,通过编写测试用例并可能逐步完成该方法,可以进行调试。

TL; DR:从演示文稿中单独计算以支​​持测试用例和调试。

答案 1 :(得分:0)

您所要做的就是将计算括在括号中,以便首先评估:

System.out.println("The total number of minutes is " + (60 * hour + minute));

否则该表达式被解释为字符串连接,这将导致乘法*出错。