gpt4 book ai didi

java - BiSection Java 测试输入

转载 作者:行者123 更新时间:2023-12-01 17:54:40 25 4
gpt4 key购买 nike

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

哪些输入将导致转到第 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com