gpt4 book ai didi

java - JUnit测试检查三角形是否是矩形

转载 作者:太空宇宙 更新时间:2023-11-04 14:29:00 26 4
gpt4 key购买 nike

我们有一个接口(interface) Rtriangle。

public interface Rtriangle {

int getApexX1();

int getApexY1();

int getApexX2();

int getApexY2();

int getApexX3();

int getApexY3();
}

有类

public final class RtriangleProvider {

public static Rtriangle getTriangle() {

return new Rtriangle() {
@Override
public int getApexY3() {
return 1;
}

@Override
public int getApexY2() {
return 1;
}

@Override
public int getApexY1() {
return 1;
}

@Override
public int getApexX3() {
return 1;
}

@Override
public int getApexX2() {
return 1;
}

@Override
public int getApexX1() {
return 1;
}
};
}
}

需要编写一个测试来检查是否是直角三角形。如果不是,应该输出错误。我编写了一个示例测试,但事实并非如此。

public class TriangleTest {

@Test
public void testGetTriangle() {
Rtriangle rt = RtriangleProvider.getTriangle();

int x1 = rt.getApexX1();
int x2 = rt.getApexX2();
int x3 = rt.getApexX3();
int y1 = rt.getApexY1();
int y2 = rt.getApexY2();
int y3 = rt.getApexY3();

int side1 = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
int side2 = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);
int side3 = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);

boolean hypo1 = (side1 == (side2 + side3));
boolean hypo2 = (side2 == (side1 + side3));
boolean hypo3 = (side3 == (side1 + side2));

boolean result = hypo1 || hypo2 || hypo3;

if (!result) {
throw new AssertionError();
}
}
}

也许我没有正确计算当事人。请帮忙。

最佳答案

你可以检查你的三角形是否满足pythagoras theorem或者不在这里。

和你在这里做的事情是一样的。

您应该能够创建不同的点(3 组坐标)。然后你就可以使用这个逻辑。

在您的情况下,所有三个点都是相同的(1,1)。这不是一个三角形。您可以尝试如下

现在你必须变得聪明。

boolean result = hypo1 || hypo2 || hypo3; // by pythagoras theorem only one 
// should true

不能全部都是true

改变

  boolean result = hypo1 || hypo2 || hypo3;

  boolean result=false;
boolean[] all = { hypo1, hypo2,hypo3 };
boolean result=false;
for (boolean a : all) {
for (boolean b: all) {
for(boolean c:all){
result =(a^b^c) && !(a&&b&&c);
}
}
}

为什么?

  boolean result = hypo1 || hypo2 || hypo3;// this will give you true 
// for all 3 variables are true

这是不正确的。您必须将该案例视为 false

关于java - JUnit测试检查三角形是否是矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26359264/

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