Javaのコンストラクタの引数の数と配列について
以下のような三角形についてのクラスを作成した。
1行目に三角形の個数、2行目に三角形の三辺の長さが書いてあるテキストファイルから読み込んで三角形を作成したい。
また三角形が作れる場合は面積を求め昇順に並べ替えて出力したい。
Triangle.java ・・・ 三角形を作成するためのクラス。三角形が作れないと判断したら"三角形にならない三辺です"というメッセージを出す。
hoge.txt ・・・ 三角形の三辺に関するテキストファイル。1行目に三角形の個数、2行目に三角形の三辺の長さが書いてある。
TriangleExeption.java ・・・ Exeptionクラスを継承しており、エラーを見つけるとメッセージを出す。
Main.java ・・・ 実行するプログラム。そして悩んでいるところ。
Triangle.java
public class Triangle { private double a; private double b; private double c; public Triangle(double a, double b, double c) throws TriangleException{ if(a >= b+c || b >= c+a || c >= b+a) { throw new TriangleException("三角形にならない三辺です"); } this.a = a; this.b = b; this.c = c; } public double area() { double s = (a + b + c) / 2.0; return Math.sqrt(s*(s-a)*(s-b)*(s-c)); } }
hoge.txt
20 81.6 59.4 57 68.4 18.7 93 61.2 22 76.8 92.4 7.7 9 60 18.7 60 113.6 94.6 75 61.2 35.2 45 79.2 95.7 30 91.2 78.1 64 74.4 93.5 71 113.6 111.1 64 110.4 80.3 55 123.6 8.8 55 70.8 56.1 85 14.4 101.2 100 32.4 79.2 101 9.6 29.7 25 99.6 53.9 32 42.8 12.1 42 25.2 5.5 93
###TriangelExeption.java
public class TriangleException extends Exception{ private String mes; public TriangleException(String mes){ this.mes = mes; } public String toString(){ return "例外処理:"+mes; } }
悩んでいること
Triange型の配列を20個作成したいのだが
Triangle[] t = new Triangle{(hoge,hoge,hoge),(hoge,hoge,hoge),...20書く!?)}
上記のようになってしまって大変なことになる。20個なら書けそうだが100個とかになれば100個コピペするのは大変だ。
###以下が考えてみたプログラム(Main.java)
import java.util.Scanner; import java.io.*; public class Main{ public static void main(String[] args)throws FileNotFoundException{ Scanner sc = new Scanner(new File("hoge.txt")); int n = sc.nextInt(); double[] area = new double[n]; //三角形の面積をいれる。 try{ Triangle t[] = new Triangle{(sc.nextDouble(),sc.nextDouble(),sc.nextDouble()),(....)...}; < - 問題点! }catch(TriangleException e){ } sc.close(); //ここの行らへんにArrays.sort(area)を書いて昇順に並べようと考えている。 }
###悩んでいるところ以外に根本的にここが違うなど、ご指摘があればお願いしたい。
ご協力感謝します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/22 15:29