0

そのため、課題があり、各課題の各学生のマークの平均を計算してから、各課題の平均を計算する必要があります。各生徒の平均を計算することはできますが、各課題の平均と平均の平均に問題があります。次に、標準偏差も計算する必要があります。方程式が与えられていますが、それを実装する方法がわかりません。

最終的な出力は次のようになります。

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;
}

私はまだ標準偏差に問題があります。

電卓を使って計算することさえできません。助けてください、または少なくとも私を正しい方向に導いてください。

ありがとうございました!

4

1 に答える 1

2

合計、平均、および標準偏差を見つけようとしている列ごとに、各列の変数を作成します。

double column1 = 0; //Do for other columns

4 つのループの内側で、その列の値を追加します。

column1 = column1 + <value at row>;  //you could also use shorthand column1+=<value at row>

括弧は単なるプレースホルダーであることに注意してください。(私はあなたの任務を遂行するつもりはありません);

4 ループの一番下で計算を行います。すでに合計があるので、これを使用して平均を計算します。平均が得られたら、標準偏差を計算できます。

于 2013-09-27T02:44:36.033 に答える