そのため、課題があり、各課題の各学生のマークの平均を計算してから、各課題の平均を計算する必要があります。各生徒の平均を計算することはできますが、各課題の平均と平均の平均に問題があります。次に、標準偏差も計算する必要があります。方程式が与えられていますが、それを実装する方法がわかりません。
最終的な出力は次のようになります。
Student Name FAN Part 1 Part 2 Part 3 Part 4 Mark Grade
Adam Adamson adam0001 85.4 79.8 82.4 86.1 82.77% DN
Bethany Bright brig0001 89.7 85.6 84.2 82.9 84.92% DN
Cameron Carlson carl0001 55.45 49.82 60.4 42.27 50.23% P
David Dawson daws0001 72.6 78.49 80.2 65.88 74.46% CR
Evelyn Ellis elli0001 50.2 35.88 48.41 58.37 46.57% FA
Frances Fitz fitz0001 78.9 75.67 82.48 79.1 78.38% DN
Greg Gregson greg0001 24.3 32.88 29.72 28.4 30.05% F
Harriett Hope hope0001 52.2 58.93 61.5 63.44 60.12% P
Ivan Indigo indi0001 88.4 91.23 90.05 92.46 91.08% HD
Jessica Jones jone0001 82.33 89.74 81.3 84.85 85.84% HD
Average 67.948 67.804 70.066 68.377 68.44% CR
StdDev 19.4441
私は3つのクラスを持っています.2つは学生の名前とファンの配列を定義しているだけで、もう1つは学生のマークの配列です。それらは質問とはあまり関係ありません。
私は基本的にメインクラスですべてを実行しています。これが適切にフォーマットする唯一の方法であり、時間がなくなったためです。
public class TopicManagement
{
public static void main(String[] args) throws IOException
{
System.out.println("Hello, Welcome to the Student Assesment Calculator");
//added an extra tab before the FAN to adjust for longer names
System.out.println("Student Name \t\tFAN \t\tScore 1\tScore 2\tScore 3\tScore 4\tMark\tGrade");
DecimalFormat df2 = new DecimalFormat("#.##"); //rouding to 2 decimal places
DecimalFormat df3 = new DecimalFormat("#.###"); //rounding to 3 decimal places
String [][] marks = StudentMarks.StudentMarks(); //marks Arrays is the students assignment results
String [][] nameFan = Student.Student(); //nameFan is the array containing student names and FANs
for (int row = 0; row < marks.length; row++)
{ //ROW,COL
double score1 = Double.parseDouble(marks[row][2]); //parsing the data from the array into a double
double score2 = Double.parseDouble(marks[row][3]);
double score3 = Double.parseDouble(marks[row][4]);
double score4 = Double.parseDouble(marks[row][5]);
double average = score1*0.1 + score2*0.4 + score3*0.2 + score4*0.3;
String grade = null;
if (85<=average && average<101) //if average is between 85 and 100
{
grade = "HD"; //High Distinction
}
else if (75<=average && average<85) //if average if between 75 and 84
{
grade = "DN"; //Distinction
}
else if (65<=average && average<75) //if average is between 65 and 74
{
grade = "CR"; //Credit
}
else if (50<=average && average<65) //if average is between 50 and 64
{
grade = "P"; //Pass
}
else if (45<=average && average<50) //if average is between 45 and 49
{
grade = "FA"; //Fail Academic
}
else if (0<=average && average<45) //if average is between 0 and 44
{
grade = "F"; //Fail
}
System.out.println(nameFan[row][0] + "\t\t" + nameFan[row][1] + "\t" + marks[row][2] + "\t" + marks[row][3] + "\t" +
marks[row][4] + "\t" + marks[row][5] + "\t" + df2.format(average) + "%\t" + grade);
}
for (int col = 0; col < marks.length; col++)
{
ArrayList average1 = new ArrayList(10);
ArrayList average2 = new ArrayList(10);
ArrayList average3 = new ArrayList(10);
ArrayList average4 = new ArrayList(10);
double part1 = Double.parseDouble(marks[col][2]);
double part2 = Double.parseDouble(marks[col][3]);
double part3 = Double.parseDouble(marks[col][4]);
double part4 = Double.parseDouble(marks[col][5]);
average1.add(part1);
average2.add(part2);
average3.add(part3);
average4.add(part4);
double average = avera;
String grade = null;
if (85<=average && average<101) //if average is between 85 and 100
{
grade = "HD"; //High Distinction
}
else if (75<=average && average<85) //if average if between 75 and 84
{
grade = "DN"; //Distinction
}
else if (65<=average && average<75) //if average is between 65 and 74
{
grade = "CR"; //Credit
}
else if (50<=average && average<65) //if average is between 50 and 64
{
grade = "P"; //Pass
}
else if (45<=average && average<50) //if average is between 45 and 49
{
grade = "FA"; //Fail Academic
}
else if (0<=average && average<45) //if average is between 0 and 44
{
grade = "F"; //Fail
}
System.out.println("\t\t\tAverage" + " \t" + average1 + "\t" + average2 + "\t" + average3 + "\t" +
average4 + "\t" + df2.format(average) + "%\t" + grade);
}
}//end of method
}//end of class
これは以下を出力します:
Hello, Welcome to the Student Assesment Calculator
Student Name FAN Score 1 Score 2 Score 3 Score 4 Mark Grade
Adam Adamson adam0001 85.4 79.8 82.4 86.1 82.77% DN
Bethany Bright brig0001 89.7 85.6 84.2 82.9 84.92% DN
Cameron Carlson carl0001 55.45 49.82 60.4 42.27 50.23% P
David Dawson daws0001 72.6 78.49 80.2 65.88 74.46% CR
Evelyn Ellis elli0001 50.2 35.88 48.41 58.37 46.56% FA
Frances Fitz fitz0001 78.9 75.67 82.48 79.1 78.38% DN
Greg Gregson greg0001 24.3 32.88 29.72 28.4 30.05% F
Harriett Hope hope0001 52.2 58.93 61.5 63.44 60.12% P
Ivan Indigo indi0001 88.4 91.23 90.05 92.46 91.08% HD
Jessica Jones jone0001 82.33 89.74 81.3 84.85 85.84% HD
与えられた標準偏差は次のとおりです (解釈できることを願っています)。
SD = sqrt(sum of(each value in the data set - mean of all data in the data set)^2)
divided by number of values in the data set
最後の 2 行、平均、標準偏差を取得する方法がわかりません。現時点で私が持っているのは、各割り当てがArrayListにスキャンされていることだと思うので、私の質問は、その配列リストのデータを取得して平均を計算できるようにするにはどうすればよいですか、またはどのように平均を計算しますか? 私はどんな提案にもオープンであり、コードを通して例を挙げていただければ幸いです。
ありがとう。
**EDIT**
わかりましたので、私は平均を行う方法を考え出しました。各割り当てにメソッドを使用し、それをメイン メソッドで呼び出します。これは 4 つのメソッドの最初のメソッドです。
public static double CalculateAverage1() throws IOException
{
String [][] marks = StudentMarks.StudentMarks();
double sum = 0;
int col = 0;
for(col = 0; col < marks.length; col++)
{
double part1 = Double.parseDouble(marks[col][2]);
sum += part1;
}
return sum/col;
}
私はまだ標準偏差に問題があります。
電卓を使って計算することさえできません。助けてください、または少なくとも私を正しい方向に導いてください。
ありがとうございました!