Java程序的执行语句序列[关闭]

14ifxucb  于 11个月前  发布在  Java
关注(0)|答案(2)|浏览(124)

已关闭。此问题需要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,但我想知道是否有更优雅的方法。

gpnt7bae

gpnt7bae1#

我不认为它会像那样工作,你肯定必须为每一行get的执行使用一个System.out,尽管你可以先在一个List中收集这些行号,然后在最后显示它们。
如果你真的想自动获取行号,你必须获取一个堆栈跟踪

Thread.currentThread().getStackTrace()[0].getLineNumber()

字符串
这将给予你当前所在的行号(显然是该语句的行号)。如果你愿意,你也可以将其移动到一个单独的函数中,然后向上移动堆栈跟踪来获得行号。
但是你真的不应该这么做。抓取堆栈跟踪是Java中最昂贵的操作之一。你真的不想对你执行的每个语句都这么做,除非性能对你来说绝对没有价值。

pobjuy32

pobjuy322#

您可以通过Code Coverage来达到要求的效果。
1.从JUnit test中调用代码。
1.在IDE中运行代码,就像“运行覆盖率测试”一样。最有可能的是,你必须在IDE中安装一些“测试覆盖率”插件。
1.您将直接在IDE中看到所有运行的行标记为绿色。
例如,对于IntelliJ IDEA,该插件被称为“代码覆盖率”:


的数据
你可以这样操作:



然后,您可以在IDE的“coverage”窗口中看到结果:



点击类名后,注意左边的绿色和红色“标记”:


相关问题