java - BiSection Java 测试输入

标签 java bisection

我有这段代码需要分析。这就是二分法。

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

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;
    }
}

最佳答案

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

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

  • middleed 之间的中间
  • 要使 middle 大于 e(else 情况),d 需要大于 e >
  • 由于第一个 if 子句(在这种情况下引发异常),这种情况似乎是不允许的

如果ed是相同的值,这可能是可能的(因此middle等于e而且不是更小),但这也可能因为 double 而失败。

关于java - BiSection Java 测试输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60741541/

相关文章:

java - 同时逐行读取两个文本文件-java

java - 如何将 Hibernate NamingStrategy 迁移到(隐式|物理)NamingStrategy?文档在哪里?

java - Lucene:获取类别的最新文档

python - 计算36个月内首付的储蓄百分比

python - 具有不连续单调函数的二等分 : Find root using bisection for weakly monotonous function allowing for jumps

java - 如何绘制不同颜色的多条线并撤消,重做android中的路径?

algorithm - 多项式求根二分法

c++ - 如何在 boost C++ 中对具有多个参数的函数使用二分方法

java - 二分查找期间堆栈溢出

java - 使用 SOAP 使用 Sharepoint Web 服务