我一直在寻找一个本来应该很容易分配的东西。 请帮帮我,我会给你所有的代码,但问题出在底部。方法部分。
这是一个编辑。我已经改变了我的计算(我使用的是^而不是(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());
}
}
答案 0 :(得分:3)
此,
if(a^2 + b^2 = c^2) {
使用bitwise-xor,而不是取幂(Java没有取幂运算符)。此外,=
是赋值(不是相等测试)。最容易解决的问题可能是,
if ((a*a) + (b*b) == (c*c)) {
答案 1 :(得分:3)
你误解了^
运算符:它在Java中是一个按位XOR,而不是幂运算符。
要获取确定您是否正在查看正三角形的代码,请使用a*a
或Math.pow(a, 2)
。
请注意,您的算法无法找到正确的答案
(-3, 4, 5)
会产生true
(5, 4, 3)
的组合定义了一个直角三角形,但您的isRechthoekigeDriehoek
方法会返回false
}。