测试检查三角形属性的布尔方法

时间:2014-10-15 15:43:01

标签: java if-statement

我一直在寻找一个本来应该很容易分配的东西。 请帮帮我,我会给你所有的代码,但问题出在底部。方法部分。

这是一个编辑。我已经改变了我的计算(我使用的是^而不是(a * a),但它并没有解决所有问题)

我的代码:

package domein;

public class Driehoek
{
    //attributen
    private int a;
    private int b;
    private int c;


    //constructors

    public Driehoek(int a , int b , int c)
    {
        this.setA(a);
        this.setB(b);
        this.setC(c);

    }

    //setters
    public void setA (int a)
    {
        if (a > 0)
            this.a = a;
        else
            this.a = 1;

    }

    public void setB (int b)
    {
        this.b = (b > 0 ? b : 1);
    }

    public void setC (int c)
    {
        this.c = (b > 0 ? b : 1);
    }  

    //getters
    public int getA()
    {
        return a;
    }

    public int getB()
    {
        return b;
    }

    public int getC()
    {
        return c;
    }

    //methode
    public boolean isRechthoekigeDriehoek(int a, int b, int c);

        if((a * a) + (b * b) == (c * c)) {

                 return true;
        }
        else 
        {
                 return false;
        } 

}

测试包:

package domein;

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Test;

public class DriehoekTest
{
private Driehoek driehoek1,driehoek2,driehoek3,driehoek4;

@Before
public void before()
{
    driehoek1 = new Driehoek(0,2,3);
    driehoek2 = new Driehoek(2,0,3);
    driehoek3= new Driehoek(2,3,0);
    driehoek4= new Driehoek(3,4,5);
}

@Test
public void controleerDriehoekZijdeAWordt1BijCreatie()
{
    Assert.assertEquals(1, driehoek1.getA());
}

@Test
public void controleerDriehoekZijdeBWordt1BijCreatie()
{
    Assert.assertEquals(1, driehoek2.getB());
}

@Test
public void controleerDriehoekZijdeCWordt1BijCreatie()
{
    Assert.assertEquals(1, driehoek3.getC());
}

@Test
public void controleerRechthoekigeDriehoek()
{
    Assert.assertEquals(true, driehoek4.isRechthoekigeDriehoek());
}

@Test
public void controleerGeenRechthoekigeDriehoek()
{
    Assert.assertEquals(false, driehoek2.isRechthoekigeDriehoek());
}

}

2 个答案:

答案 0 :(得分:3)

此,

if(a^2 + b^2 = c^2) {

使用bitwise-xor,而不是取幂(Java没有取幂运算符)。此外,=是赋值(不是相等测试)。最容易解决的问题可能是,

if ((a*a) + (b*b) == (c*c)) {

答案 1 :(得分:3)

你误解了^运算符:它在Java中是一个按位XOR,而不是幂运算符。

要获取确定您是否正在查看正三角形的代码,请使用a*aMath.pow(a, 2)

请注意,您的算法无法找到正确的答案

  • 当某些长度为负数时 - 平方负数会产生正数结果,因此(-3, 4, 5)会产生true
  • 当最长边不是列表中的最后一边时,(5, 4, 3)的组合定义了一个直角三角形,但您的isRechthoekigeDriehoek方法会返回false }。