私はそれを解決する方法を提案しました。
あなたは、手動で入力する必要なしに異なるパラメータで自動的にテストできるようにしたいので、私は以下のように三角形部分を分離しました。
編集:私は、コードをやり直しやや
通常の実行クラスのsrc/main.java
JUnitのクラステスト/ TrianglesTest.java
import org.junit.Test;
import java.util.Arrays;
import java.util.List;
import static org.junit.Assert.assertEquals;
public class TrianglesTest {
/**
* Testing with String inputs (what you'd enter manually)
*/
@Test
public void testWithStrings() {
List<String> triangleLengths = Arrays.asList("len1", "len2", "len3");
Triangle subject = new Triangle(triangleLengths);
// Example of checking if expected type
assertEquals(Triangle.Type.ISOSCELES, subject.getTriangleType());
}
/**
* Testing with numbers as what I'd expect the triangle to be made of
*
* Here you test with a triangle object
*
* Haven't tested what the 3 types is sorry :O
*/
@Test
public void testWithNumbersAsObject() {
Triangle subject = new Triangle(4, 5.32, 7);
assertEquals(Triangle.Type.SCALENE, subject);
}
/**
* This piece you check the static method but have no object
*/
@Test
public void testWithNumbersStaticMethod() {
assertEquals(Triangle.Type.ISOSCELES, Triangle.getTriangleType(3.4d, 4d, 1.111d));
}
}
最後に、あなたが望む実際のコードテストするためにのsrc/Triangles.java
import java.util.List;
/**
* I created so you can both have an object of the triangle or make the check purely static
* maybe you need an object type for later?
*/
public class Triangle {
final double side0;
final double side1;
final double side2;
public Triangle(List<String> triangleLengths) {
this(Double.parseDouble(triangleLengths.get(0)),
Double.parseDouble(triangleLengths.get(1)),
Double.parseDouble(triangleLengths.get(2)));
}
public Triangle(double side0, double side1, double side2) {
this.side0 = side0;
this.side1 = side1;
this.side2 = side2;
}
public Triangle.Type getTriangleType() {
return Triangle.getTriangleType(side0, side1, side2);
}
public static Triangle.Type getTriangleType(double side0, double side1, double side2) {
if (isEquilateral(side0, side1, side2)) {
return Type.EQUILATERAL;
} else if (isIsosceles(side0, side1, side2)) {
return Type.ISOSCELES;
} else if (isScalene(side0, side1, side2)) {
return Type.SCALENE;
} else {
return Type.INVALID;
}
}
private static boolean isScalene(double side0, double side1, double side2) {
return side0 != side1 && side1 != side2;
}
private static boolean isIsosceles(double side0, double side1, double side2) {
return side0 == side1 || side0 == side2 || side1 == side2;
}
private static boolean isEquilateral(double side0, double side1, double side2) {
return side0 == side1 && side1 == side2;
}
public enum Type {
EQUILATERAL,
ISOSCELES,
SCALENE,
INVALID
}
}
は、この情報がお役に立てば幸いです。
私はTriangleクラスから即座にそれを書き出す代わりに答えを返すことに注意してください。そして手動で実行する場合にのみ、私はそれをメインメソッドから書き出します。
あなたが求めているのではなく、入力が三角形を作ることができないときを把握するための論理はちょっとありません。最も長い長さが他の2つの長さの合計以上であれば、3つの長さは三角形を作ることができないので、そこにいくつかの算術が必要です。 –