Java 测试检查三角形属性的布尔方法
我已经找了一个多小时的东西,本来应该是一个简单的任务。 请帮助我,我会给你我所有的代码,但问题是在底部的一部分。该部分介绍了该方法 这是一个编辑。我已经改变了我的计算方法(我用^代替了(a*a),但它并没有解决所有问题) 我的代码:Java 测试检查三角形属性的布尔方法,java,if-statement,Java,If Statement,我已经找了一个多小时的东西,本来应该是一个简单的任务。 请帮助我,我会给你我所有的代码,但问题是在底部的一部分。该部分介绍了该方法 这是一个编辑。我已经改变了我的计算方法(我用^代替了(a*a),但它并没有解决所有问题) 我的代码: package domein; public class Driehoek { //attributen private int a; private int b; private int c; //constructo
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());
}
}
测试包:
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());
}
}
这个,
使用的是按位异或,而不是指数运算(Java没有指数运算)。另外,=
是赋值(不是相等性测试)。最简单的修复方法可能是
if ((a*a) + (b*b) == (c*c)) {
您误解了
^
运算符:它在Java中是位异或,而不是幂运算符
要获取确定您是否正在查看直角三角形的代码,请使用a*a
或Math.pow(a,2)
请注意,您的算法将无法找到正确答案
- 当某些长度为负数时-将负数平方产生正结果,因此
将产生(-3,4,5)
真
- 当最长的边不是列表上的最后一条边时-一个
的组合定义了一个直角三角形,但是您的(5,4,3)
方法将返回isRechthoekigeDriehoek
false
setC
方法中是否有输入错误?J.P.是对的!我的setC方法中有一个类型。谢谢小加法:你可以做:返回(a*a)+(b*b)=(c*c);这节省了一些空间,并且做了同样的事情:)是的,我必须添加空格,因为注释系统似乎会将没有空格的“a*a”转换为:(a*a)+(b*b)==(c*c)…编辑:好了,现在它做得正确了。。我不知道发生了什么事:P@dasblinkenlight非常感谢。