-
Notifications
You must be signed in to change notification settings - Fork 0
/
作业8.txt
147 lines (109 loc) · 4.14 KB
/
作业8.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package weijun;
import static org.junit.Assert.*;
import org.junit.Test;
class Triangle {
// 定义三角形的三边
protected long lborderA = 0;
protected long lborderB = 0;
protected long lborderC = 0;
// 构造函数
public Triangle(long lborderA, long lborderB, long lborderC) {
this.lborderA = lborderA;
this.lborderB = lborderB;
this.lborderC = lborderC;
}
/**
* 判断是否是三角形
*
* 是返回true;不是返回false
*/
public boolean isTriangle(Triangle triangle) {
boolean isTriangle = false;
// 判断边界,大于0 小于或等于Long.MAX_VALUE,出界返回false
if ((triangle.lborderA > 0 && triangle.lborderA <= Long.MAX_VALUE)
&& (triangle.lborderB > 0 && triangle.lborderB <= Long.MAX_VALUE)
&& (triangle.lborderC > 0 && triangle.lborderC <= Long.MAX_VALUE)) {
// 判断两边之差小于第三边
if (diffOfBorders(triangle.lborderA, triangle.lborderB) < triangle.lborderC
&& diffOfBorders(triangle.lborderB, triangle.lborderC) < triangle.lborderA
&& diffOfBorders(triangle.lborderC, triangle.lborderA) < triangle.lborderB) {
isTriangle = true ;
}
}
return isTriangle;
}
/**
* 判断三角形类型
*
* 只有两条边相等的三角形返回字符串“等腰三角形”; 三边均相等的三角形返回字符串“等边三角形”; 三边均不等的三角形返回字符串“不等边三角形”;
*/
public String getType(Triangle triangle) {
String strType = "Illegal";
// 判断是否是三角形
if (isTriangle(triangle)) {
// 判断是否是等边三角形
if (triangle.lborderA == triangle.lborderB
&& triangle.lborderB == triangle.lborderC)
strType = "Regular";
// 判断是否是不等边三角形
else if ((triangle.lborderA != triangle.lborderB)
&& (triangle.lborderB != triangle.lborderC)
&& (triangle.lborderA != triangle.lborderC)) {
if((((triangle.lborderA*triangle.lborderA)+(triangle.lborderB*triangle.lborderB))==(triangle.lborderC*triangle.lborderC))
||(((triangle.lborderA*triangle.lborderA)+(triangle.lborderC*triangle.lborderC))==(triangle.lborderB*triangle.lborderB))
||((triangle.lborderA*triangle.lborderA)==((triangle.lborderB*triangle.lborderB)+(triangle.lborderC*triangle.lborderC))))
strType="zhijiao";
else strType = "Scalene";
}
// 三角形既非三边全部相等,又非全部不等,只能是部分相等即等腰三角形
else {
strType = "Isoceles";
}
}
return strType;
}
/**
* 计算两边之差的绝对值
*
* */
public long diffOfBorders(long a, long b) {
return (a > b) ? (a - b) : (b - a);
}
/**
* 用于获取三角形的边长
*/
public long[] getBorders() {
long[] borders = new long[3];
borders[0] = this.lborderA;
borders[1] = this.lborderB;
borders[2] = this.lborderC;
return borders;
}
}
public class aa{
@Test
public void testIsTriangle1(){
Triangle t = new Triangle(2,1,2);
assertEquals(t.getType(t),"Isoceles");
}
@Test
public void testIsTriangle2(){
Triangle t = new Triangle(5,4,8);
assertEquals(t.getType(t),"Scalene");
}
@Test
public void testIsTriangle3(){
Triangle t = new Triangle(2,2,2);
assertEquals(t.getType(t),"Regular");
}
@Test
public void testIsTriangle4(){
Triangle t = new Triangle(1,1,2);
assertEquals(t.getType(t),"Illegal");
}
@Test
public void testIsTriangle5(){
Triangle t = new Triangle(3,4,5);
assertEquals(t.getType(t),"zhijiao");
}
}