首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BiSection Java测试输入

BiSection Java测试输入
EN

Stack Overflow用户
提问于 2020-03-18 22:24:02
回答 1查看 50关注 0票数 0

我要分析这段代码。这是平分方法。

哪些输入将导致进入第18行和第19行的分支?

代码语言:javascript
复制
public class BiSectionExample {
    public double root(double d, double e, double f) throws IllegalArgumentException {
        double middle;
        if (d >= e) {
            System.out.println("1");
            throw new IllegalArgumentException("low must be lower than high");
        }

        System.out.println(d + " " + e + " " + f);
        while (e - d > f) {
            System.out.println("2");
            System.out.println("once");
            middle = (e + d) / 2;
            if (middle < e) {
                System.out.println("3");
                d = middle;
            } else {
                System.out.println("4"); // line 18
                e = middle; // line 19
            }
        }

        System.out.println((e + d) / 2);
        return (e + d) / 2;
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-03-18 23:07:59

如果您正在使用JUnit测试它,您可以使用重复测试并输入随机生成的值,因此到达这些行的概率很高。此外,设置行的调试器断点也很有用,这样您就可以看到到达这些行时的输入是什么。

但通过手动测试,我认为不可能在这种情况下结束,因为:

  • middled
  • for和e之间的中间情况( else情况) d需要大于else大小写似乎不允许,因为第一个if- middle (在本例中抛出了一个异常)

如果ed是相同的值(因此middle等于e,而不是smaler),这可能是可能的,但这也可能因为双精度而失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60741541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档