0

私の課題は、学生の詳細と 4 つの課題の成績を含むテキスト ファイルをスキャンするプログラムを作成することです。このファイルは、文字列 (詳細) と倍精度 (学生の成績) の両方に分解され、最終的に平均を計算します。学生の成績ごとに、次に各課題の平均。最終的な出力は次のようになります (課題シートから取得):

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% HD
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

テキスト ファイルには 10 行あり、最初の行は次のとおりです。

アダム アダムソン、adam0001,85.4,79.8,82.4,86.1

ランダムに作成された 10 人の生徒についても同様です。トピック管理と呼ばれるメイン クラス、StudentMarks クラス (生徒の成績用)、および Student クラス (名前と FAN (adam0001 部分) 用) の 3 つのクラスがあります。マークと呼ばれるすべてのスコアを格納する配列を作成しました。名前と FAN を出力でき、 double score1 = double.parseDouble(); を使用してグレードを double に割り当てることもできます。など。各スコアには独自のメソッドがあり、メインクラスで呼び出しています。

私が抱えている問題は、結果の各列を名前とファンの横に印刷することです。現時点では、下の 1 列に印刷するだけです。次に、平均を計算する必要がありますが、どうすればよいかわかりません。どんな助けでも大歓迎です。これはこれまでの私のプログラムです:

これは私のメイン クラスです - トピック管理:

public class TopicManagement 
{

ArrayList part1 = new ArrayList(10);
ArrayList part2 = new ArrayList(10);
ArrayList part3 = new ArrayList(10);
ArrayList part4 = new ArrayList(10);

public static void main(String[] args) throws IOException 
{   

    System.out.println("Hello, Welcome to the Student Assesment Calculator");
    System.out.println("Student Name \t  FAN \t\tScore 1\tScore2\tScore 3\tScore 4\tTotal");

    Student student = new Student();
    StudentMarks studentMarks = new StudentMarks();

    for (int row = 0; row < nameFan.length; row++) 
    {
         System.out.println(nameFan[row][0] + "\t " + nameFan[row][1] + "\t ");
         //System.out.println("");
    }

    for (int col = 0; col < marks.length; col++)
    {
        double score1 = Double.parseDouble(marks[col][2]);
        double score2 = Double.parseDouble(marks[col][3]);
        double score3 = Double.parseDouble(marks[col][4]);
        double score4 = Double.parseDouble(marks[col][5]);

        part1.add(score1);
        part2.add(score2);
        part3.add(score3);
        part4.add(score4);

        System.out.println(part1.get(col) + "\t" + part2.get(col) + "\t" + 
                           part3.get(col) + "\t" + part4.get(col) + "\t");


    }

}//end of method
}//end of class

学生クラス:

public class Student 
{           //ROW, COL
    String[][] nameFan = new String[10][6];
            //this method outputs the name and fan
public void student() throws IOException 
{   
    Scanner scan = new Scanner (new File ("TestResults.txt"));


    for (int row = 0, col; row < nameFan.length; row++)
    {
        Scanner lineRead = new Scanner(scan.nextLine());
        lineRead.useDelimiter(",");

        col = 0; // Starting at column 0 for each row

        while (lineRead.hasNext()) //Check for next
        {
            nameFan[row][col]=lineRead.next();

            col++; // Move on to the next column   
        }
    }
}//end of nameFan method
}//end of class

最後に、StudentsMarks クラス:

public class StudentMarks 
{                 
        //ROW, COL
String[][] marks = new String[10][6];

        //was going to call the method 'student' but would have been confusing with the student class
public String[][] studentMarks() throws IOException 
{  
    Scanner scan = new Scanner (new File ("TestResults.txt"));


    for (int row = 0, col; row < marks.length; row++)
    {
        Scanner lineRead = new Scanner(scan.nextLine());
        lineRead.useDelimiter(",");

        col = 0; //Starting at column 0 for each row

        while (lineRead.hasNext()) //Check for next
        {
            marks[row][col]=lineRead.next();

            col++; // Move on to the next column
        }
    }

    return marks;
}   
}

これの出力は次のようになります。

Hello, Welcome to the Student Assesment Calculator
Student Name      FAN       Score 1 Score2  Score 3 Score 4 Total
Adam Adamson     adam0001    
Bethany Bright   brig0001    
Cameron Carlson  carl0001    
David Dawson     daws0001    
Evelyn Ellis     elli0001    
Frances Fitz     fitz0001    
Greg Gregson     greg0001    
Harriett Hope    hope0001    
Ivan Indigo      indi0001    
Jessica Jones    jone0001    
85.4    79.8    82.4    86.1    
89.7    85.6    84.2    82.9    
55.45   49.82   60.4    42.27   
72.6    78.49   80.2    65.88   
50.2    35.88   48.41   58.37   
78.9    75.67   82.48   79.1    
24.3    32.88   29.72   28.4    
52.2    58.93   61.5    63.44   
88.4    91.23   90.05   92.46   
82.33   89.74   81.3    84.85

さて、私が今行ったことは、student および studentMarks クラスのメソッドからの出力を呼び出すことではなくなりました。配列を取得して ArrayLists (part1、part2 など) に配置し、それらの配列リストを出力しています。出力の形式にまだ問題があります。それらを同じ列に並べることはできません。println と print 行の意味は理解できますが、ループ内にそれらが必要です。そうしないと、学生の名前やファンなどがすべてを 1 行に出力してしまいますね。

そして、平均を計算する方法がわかりません(または%としてのマーク、読み方によって異なります)。それらがArrayListにあるようになったので、簡単になることを願っていますが、開始方法がわかりません. どんな助けでも大歓迎です!

4

1 に答える 1