已关闭。此问题需要details or clarity。目前不接受回答。
**要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
20小时前就关门了
Improve this question的
给定一个Java程序,我想运行它并确定执行语句的顺序。
import java.util.Scanner;
public class Temp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in); // line 4
int n = sc.nextInt();
int m = n;
if (n > 0) {
m = 2 * n;
} else {
m = 3 * n;
}
}
}
字符串
使用一个负整数作为输入,我想获得序列4,5,6,7,10(可能没有7),指的是执行的行。
当然,你可以在源代码中的每条语句后添加一个System.out.println,但我想知道是否有更优雅的方法。
2条答案
按热度按时间gpnt7bae1#
我不认为它会像那样工作,你肯定必须为每一行get的执行使用一个
System.out
,尽管你可以先在一个List
中收集这些行号,然后在最后显示它们。如果你真的想自动获取行号,你必须获取一个堆栈跟踪
字符串
这将给予你当前所在的行号(显然是该语句的行号)。如果你愿意,你也可以将其移动到一个单独的函数中,然后向上移动堆栈跟踪来获得行号。
但是你真的不应该这么做。抓取堆栈跟踪是Java中最昂贵的操作之一。你真的不想对你执行的每个语句都这么做,除非性能对你来说绝对没有价值。
pobjuy322#
您可以通过Code Coverage来达到要求的效果。
1.从JUnit test中调用代码。
1.在IDE中运行代码,就像“运行覆盖率测试”一样。最有可能的是,你必须在IDE中安装一些“测试覆盖率”插件。
1.您将直接在IDE中看到所有运行的行标记为绿色。
例如,对于IntelliJ IDEA,该插件被称为“代码覆盖率”:
的数据
你可以这样操作:
的
然后,您可以在IDE的“coverage”窗口中看到结果:
的
点击类名后,注意左边的绿色和红色“标记”:
的