【Java】直角三角形判定_Ver3
コード更新致しました。
固有処理基底クラスを更新したので、更新したコードを紹介いたします。
import static java.lang.Integer.parseInt;
import static java.lang.Math.pow;
import static java.lang.System.out;
import volume0.BaseExe;
public class RightTriangle extends BaseExe {
public static void main(String args[]) {
new RightTriangle().exeSysIn();
}
@Override
protected void execute() throws Exception {
int dataCount = parseInt(nextLine());
for (int i = 0; i < dataCount; i++) {
String[] data = nextLine().split(" ");
printJudgeTriangle(parseInt(data[0]), parseInt(data[1]), parseInt(data[2]));
}
}
private void printJudgeTriangle(int a, int b, int c) {
if (judgeTriangle(a, b, c) || judgeTriangle(b, c, a) || judgeTriangle(c, a, b)) {
out.println("YES");
} else {
out.println("NO");
}
}
private boolean judgeTriangle(int x, int y, int z) {
return pow2(x) + pow2(y) == pow2(z);
}
private double pow2(double num) {
return pow(num, 2);
}
}
テストドライバは以下になります。
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import volume0.BaseTest;
public class RightTriangleTest extends BaseTest {
private RightTriangle rt;
@Before
public void setUp() throws Exception {
super.setUp();
rt = new RightTriangle();
}
@After
public void tearDown() throws Exception {
super.tearDown();
}
@Test
public void testRight0001() {
rt.exeFileIn("./data/volume0_0003/in.txt");
assertOutList("./data/volume0_0003/out.txt");
}
}
テストドライバ内で使用している「in.txt」・「out.txt」は以下になります。
in.txt
3
4 3 5
4 3 6
8 8 8
out.txt
YES
NO
NO
Ver1で問題の解説等を行なっているので、そちらを参照してください。
アルゴリスムで困った時は、以下の本を参考にしてます。Javaに置き換えるのが少々難解ですが、、、
固有処理の基底クラスは以下の記事に記載していますので、参考にしてください。
テストドライバで継承しているクラスは以下の記事に記載していますので、参考にしてみてください。