解答例 - j1.lesson05.TriangleCheck

package j1.lesson05;

import java.io.*;

/**
 * 課題0501 - 解答例.
 @author s.arakawa
 @version $Id: TriangleCheck_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
 */
public class TriangleCheck {

    /**
     * コンソールに三角形の3辺a,b,cの長さをそれぞれ入力させ、
     * その三角形が二等辺三角形、正三角形、それ以外の三角形のうちいずれに属するかを表示するプログラム。
     @param args 無視される
     @throws IOException 入力中に例外が発生した場合
     */
    public static void main(String[] argsthrows IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("辺aの長さを入力:");
        int a = Integer.parseInt(reader.readLine());
        System.out.print("辺bの長さを入力:");
        int b = Integer.parseInt(reader.readLine());
        System.out.print("辺cの長さを入力:");
        int c = Integer.parseInt(reader.readLine());
        
        // 正三角形 であるならば 二等辺三角形 である
        // 二等辺三角形 であれば 三角形 である
        // 以上より、正三角形 -> 二等辺三角形 -> 三角形 の順にチェック
        
        // 正三角形 ならば a == b == c 
        // Javaでは上記のように書けないので、
        //   a == b && b == c && c == a
        // ただし、全順序集合では、
        //   a == b && b == c ならば c == a
        // が成り立つので、以下のようにする
        if (a == b && b == c) {
            System.out.println("入力された三角形は正三角形");
        }
        
        // 正三角形でない && 二つの辺の長さが同じ ならば 二等辺三角形
        // これをJavaで表すなら、前者の「正三角形でない」はelseで表現
        // 「二つの辺の長さが同じ」は全ての2つの辺の組み合わせを列挙して
        // そのどれかが同じならばよい
        // 列挙すると、 (a, b), (b, c), (c, a) になる
        else if (a == b || b == c || c == a) {
            System.out.println("入力された三角形は二等辺三角形");
        }
        
        // 正三角形でない かつ 二等辺三角形でない ならば 通常の三角形
        // if-else の連鎖の末尾なら上記の条件は満たされている
        else {
            System.out.println("入力された三角形は通常の三角形");
        }
    }
}