argsで「71 85 93 83 63 31 67 77 81 87 89 55」と指定します。
test[][]に二重for文で入れると思うのですがそのやり方ができず、こんなに長いプログラムになってしまいました。
あと、せっかくint b;を使って最高点を指定しているのですがそれも生かせていません。
どうすれば短く、簡単なプログラムにできますか?
public class a { public static void main(String[] args) { int[][] test = new int[4][3]; int n = args.length; int sum=0,sum2=0,sum3=0,sum4=0; double heikin; if (n == 12) { System.out.println("コマンドライン引数は" +n+ "個です。"); for (int i=0; i<3; i=i+1) { test[0][i] = Integer.parseInt(args[0+i]); test[1][i] = Integer.parseInt(args[3+i]); test[2][i] = Integer.parseInt(args[6+i]); test[3][i] = Integer.parseInt(args[9+i]); } System.out.print("英語:"); for (int i=0; i<3; i=i+1) { System.out.print(test[0][i]+ "\t"); } for (int j=0; j<2; j=j+1) { for (int k=j+1; k<3;k=k+1) { if (test[0][j] < test[0][k]) { int b = test[0][j]; test[0][j] = test[0][k]; test[0][k] = b; } } } for (int i=0; i<3; i=i+1) { sum = sum + test[0][i]; } heikin = (double)sum / 3.0; System.out.print("最高点:" +test[0][0]+ "、最低点:" +test[0][2]+ "、平均点:" +heikin); System.out.println(); System.out.print("数学:"); for (int i=0; i<3; i=i+1) { System.out.print(test[1][i]+ "\t"); } for (int j=0; j<2; j=j+1) { for (int k=j+1; k<3;k=k+1) { if (test[1][j] < test[1][k]) { int b = test[1][j]; test[1][j] = test[1][k]; test[1][k] = b; } } } for (int i=0; i<3; i=i+1) { sum2 = sum2 + test[1][i]; } heikin = (double)sum2 / 3.0; System.out.print("最高点:" +test[1][0]+ "、最低点:" +test[1][2]+ "、平均点:" +heikin); System.out.println(); System.out.print("国語:"); for (int i=0; i<3; i=i+1) { System.out.print(test[2][i]+ "\t"); } for (int j=0; j<2; j=j+1) { for (int k=j+1; k<3;k=k+1) { if (test[2][j] < test[2][k]) { int b = test[2][j]; test[2][j] = test[2][k]; test[2][k] = b; } } } for (int i=0; i<3; i=i+1) { sum3 = sum3 + test[2][i]; } heikin = (double)sum3 / 3.0; System.out.print("最高点:" +test[2][0]+ "、最低点:" +test[2][2]+ "、平均点:" +heikin); System.out.println(); System.out.print("理科:"); for (int i=0; i<3; i=i+1) { System.out.print(test[3][i]+ "\t"); } for (int j=0; j<2; j=j+1) { for (int k=j+1; k<3;k=k+1) { if (test[3][j] < test[3][k]) { int b = test[3][j]; test[3][j] = test[3][k]; test[3][k] = b; } } } for (int i=0; i<3; i=i+1) { sum4 = sum4 + test[3][i]; } heikin = (double)sum4 / 3.0; System.out.print("最高点:" +test[3][0]+ "、最低点:" +test[3][2]+ "、平均点:" +heikin); System.out.println(); } else { System.out.println("エラー! コマンドライン引数が" +n+"個です。"); } } }
実行結果はこんな感じです。
コマンドライン引数は12個です。 英語:71 85 93 最高点:93、最低点:71、平均点:83.0 数学:83 63 31 最高点:83、最低点:31、平均点:59.0 国語:67 77 81 最高点:81、最低点:67、平均点:75.0 理科:87 89 55 最高点:89、最低点:55、平均点:77.0
補足説明
Eclipseを使っています。
回答2件
あなたの回答
tips
プレビュー