Posted at

配列の練習2

ArrayPracticeクラスのフィールド部分で

int[][]arr= new int[3][students];と入れたかったが

エラーが出たので諦め。できるだけ読みやすくなるよう努めた。

メソッドの内容は前の配列練習の文を元に少し手を加えた。


ArrayExam.java

package JavaStudy;

//メソッドを分けて配列の練習
//テスト結果(教科名・平均点・科目別最高点・生徒数)を出力

public class ArrayExam {

public static void main(String[] args) {
final int math = 0;
final int english = 1;
final int science = 2;

ArrayPractice t = new ArrayPractice(20);
t.startExam(math);
t.startExam(english);
t.startExam(science);

t.printResult(math);
t.printResult(english);
t.printResult(science);
}
}



ArrayPractice.java

package JavaStudy;

import java.util.Random;
//各項目出力用のメソッドをまとめた
public class ArrayPractice {
final String[] SUBJECT= {"算数","英語","理科"};
int students = 0;
int [][] arr;
//インスタンス生成時にクラスの生徒数を受け取る
ArrayPractice(int students){
this.students = students;
arr = new int[3][students];
}

void printResult(int sub) {
//結果を出力する
System.out.println("試験科目は "+ SUBJECT[sub]+"です。");
System.out.println("生徒数は "+ students +"人です。");
System.out.println("平均点は "+ resultAverage(sub)+"点です。");
System.out.println("最高点は "+ getMax(sub)+"点です。");
System.out.println("-----------");
}
int getMax(int sub) {
//科目別の最高点を返す
int max = 0;
for(int i = 0;i < students;i++) {
if(arr[sub][i] > max)
max = arr[sub][i];
}
return max;
}
void startExam(int sub) {
//ランダムな点数(0〜100点)を教科の配列にいれる
Random random = new Random();
for(int i = 0;i < students ;i++)
arr[sub][i] = random.nextInt(101);
}
int resultAverage(int sub) {
//平均点を返す
int sum = 0;
int average = 0;
for(int i =0;i < students;i++)
sum = sum + arr[sub][i];
average = sum/students;
return average;
}
}