题目
Java写一个判断三角形形状的程序,要求能判断是否是等边三角形,等腰三角形,直角三角形,利用Junit进行白盒测试。
实现代码
Triangle
package test; public class Triangle { protected long A = 0; protected long B = 0; protected long C = 0; // Constructor public Triangle(long A,long B,long C) { this.A =A; this.B =B; this.C =C; } /** *检查是否是一个三角形 * */ public boolean isTriangle(Triangle triangle) { boolean isTriangle =false; // 检查三条边是否合法 if ((triangle.A > 0 &&triangle.A <= 200) && (triangle.B > 0 &&triangle.B <= 200) && (triangle.C > 0 &&triangle.C <= 200)) { // 检测两边之和大于第三边 if (((triangle.A+triangle.B)>triangle.C)&& ((triangle.A+triangle.C)>triangle.B)&& ((triangle.B+triangle.C)>triangle.A)){ isTriangle = true; } } return isTriangle; } /** * 检查三角形的类型 * 包括:非法三角形、等边三角形、不等边三角形、等腰三角形 */ public String getType(Triangle triangle) { String strType ="不能组成三角形"; if (isTriangle(triangle)) { // 是等边三角形 if (triangle.A ==triangle.B && triangle.B ==triangle.C) { strType = "等边三角形"; } // 如果,是等要三角形 else if (((triangle.A==triangle.B)&&(triangle.B!=triangle.C))|| ((triangle.A==triangle.C)&&(triangle.B!=triangle.C))|| ((triangle.C==triangle.B)&&(triangle.B!=triangle.A))) { strType = "等腰三角形"; } // 如果,是直角三角形 else if((triangle.A*triangle.A+triangle.B*triangle.B==triangle.C*triangle.C)|| (triangle.B*triangle.B+triangle.C*triangle.C==triangle.A*triangle.A)|| (triangle.A*triangle.A+triangle.C*triangle.C==triangle.B*triangle.B)){ strType = "直角三角形"; } else{ strType = "一般三角形"; } } return strType; } }
TriangleTest
package test; import static org.junit.Assert.*; import org.junit.Test; public class TriangleTest { Triangle a =new Triangle(201, 2, 2); Triangle b =new Triangle(1, 1, 2); Triangle c =new Triangle(2, 2, 2); Triangle d =new Triangle(3, 4, 5); Triangle e =new Triangle(7, 8, 9); Triangle f =new Triangle(7, 7, 9); @Test public void testIsTriangle() { assertEquals(false,b.isTriangle(b)); assertEquals(false,a.isTriangle(a)); assertEquals(true,e.isTriangle(e)); assertEquals(true,c.isTriangle(c)); assertEquals(true,d.isTriangle(d)); assertEquals(true,f.isTriangle(f)); } @Test public void testGetType() { assertEquals("不能组成三角形",b.getType(b)); assertEquals("不能组成三角形",a.getType(a)); assertEquals("等边三角形",c.getType(c)); assertEquals("等腰三角形",f.getType(f)); assertEquals("直角三角形",d.getType(d)); assertEquals("一般三角形",e.getType(e)); } }
控制流图
1开始输入三边长度
2判断数据是否合法
3不是合法三角形
4判断任意两边之和是否大于第三边
5不是三角形
6判断三边是否相等
7是等边三角形
扫描二维码关注公众号,回复:
1689809 查看本文章
8结束
9判断是否是等腰三角形
10是等腰三角形
11判断是否是直角三角形
12是直角三角形
13是普通三角形
测试用例
路径A:1-2-3-8
路径B:1-2-4-5-8
路径C:1-2-4-6-7-8
路径D:1-2-4-6-9-10-8
路径E:1-2-4-6-9-11-12-8
路径F:1-2-4-6-9-11-13-8
用例 |
输入 |
输出 |
路径 |
是否通过 |
备注 |
1 |
201,2,2 |
不能组成三角形 |
A |
通过 |
|
2 |
1,1,2 |
不能组成三角形 |
B |
通过 |
|
3 |
2,2,2 |
等边三角形 |
C |
通过 |
|
4 |
7,7,9 |
等腰三角形 |
D |
通过 |
|
5 |
3,4,5 |
直角三角形 |
E |
通过 |
|
6 |
7,8,9 |
一般是三角形 |
F |
通过 |