2020.10.07
3辺の長さで三角形かを判定
判定方法
判定の手順は以下のとおりです。
①3つの辺長のうち、1つでも0以下のものがあれば「三角形ではない」と判定します。
②2つの辺長の和が、他の1つの辺の長さ以下の場合、「三角形ではない」と判定します。
以下のいずれかの条件を満たした場合、三角形ではありません。
( b + c ) <= a ( a + c ) <= b ( a + b ) <= c
③上記の①と②の条件を満たさい場合、「三角形である」と判定します。
Javaソースコード
TriangleCheck1.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058
public class TriangleCheck1 { // 3辺の長さabcを渡して、三角形になるかを判定 static boolean isTriangle( double a, double b, double c ) { // 長さが0より長いかを検査 if ( 0.0 >= a ) return false; if ( 0.0 >= b ) return false; if ( 0.0 >= c ) return false; // 2辺の長さの和が、他の1辺より長いかを検査 if ( ( b + c ) <= a ) return false; if ( ( a + c ) <= b ) return false; if ( ( a + b ) <= c ) return false; // 三角形になると判定 return true; } // メイン public static void main(String[] args) { // 辺の長さを格納する変数を宣言 double a, b, c; // 入力した引数が3以上かを調べる if ( 3 > args.length ) { // 入力した引数が3未満の場合、使用方法を表示する System.out.println( "TriangleCheck1 [辺長1] [辺長2] [辺長3]" ); return; } // 引数の値をa,b,cに代入 try { // 引数を変換し、a,b,cに代入 a = Double.valueOf( args[ 0 ] ); b = Double.valueOf( args[ 1 ] ); c = Double.valueOf( args[ 2 ] ); } catch( NumberFormatException ne ) { System.out.println( "引数が不正です" ); return; } // 3辺の長さを出力 System.out.println( "辺aの長さ=" + a ); System.out.println( "辺bの長さ=" + b ); System.out.println( "辺cの長さ=" + c ); System.out.print( "判定結果:" ); // 三角形になるかを判定 if ( isTriangle( a, b, c ) ) System.out.println( "○" ); else System.out.println( "×" ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis TriangleCheck1.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac TriangleCheck1.java
実行例①
java TriangleCheck1 3 4 5
辺aの長さ=3.0 辺bの長さ=4.0 辺cの長さ=5.0 判定結果:○
辺の長さが3と4と5の場合、三角形として成立できると判定しています。
実行例②
java TriangleCheck1 1 4 5
辺aの長さ=1.0 辺bの長さ=4.0 辺cの長さ=5.0 判定結果:×
Javaソースコードの解説
これまで判定について説明した箇所は、以下のメソッドです。
002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017
// 3辺の長さabcを渡して、三角形になるかを判定 static boolean isTriangle( double a, double b, double c ) { // 長さが0より長いかを検査 if ( 0.0 >= a ) return false; if ( 0.0 >= b ) return false; if ( 0.0 >= c ) return false; // 2辺の長さの和が、他の1辺より長いかを検査 if ( ( b + c ) <= a ) return false; if ( ( a + c ) <= b ) return false; if ( ( a + b ) <= c ) return false; // 三角形になると判定 return true; }
以上です。