1

私はUniでコンピュータサイエンスを勉強していて、Javaを理解するのが非常に難しいと感じています。何をする必要があるかはわかっていますが、それが理にかなっている場合は、コーディング方法を理解できません。

試験に合格した学生と不合格になった学生の数を出力するタスクがあります。これはユーザー入力によって行われます。名前とマークを尋ねられ、合格者と不合格者の数が計算されます。現在、詳細はに保持されてArrayListおり、失敗した生徒の数を抽出する必要があります。私は半分それをしました。

class Course
{

    private ArrayList<Student> people = new ArrayList<Student>();

    public void add( Student s )
    {
        people.add( s );
    }
    //Return the number of students who failed (mark<40)
    public int fail()
    {
        int count = 0;
        for ( int i=0; i< people.size(); i++ );
        int mark = people.get(i).getMark();
        {
            if (mark < 40) {
                count = count +1;
            }
        }

        return count;
    }
}

私はこれが正しくないことを知っていますが、基本的にそこにありますか?何か助けてください?もうコードが必要な場合は、質問してください。ありがとう

4

3 に答える 3

4

ループ宣言;を含む行の終わりからを削除し、次の中括弧内に行を配置する必要があります。forint mark

for ( int i=0; i< people.size(); i++ )
{
    int mark = people.get(i).getMark();
    if(mark < 40){
        count = count +1;
    }
}

ループの後のセミコロンは、forループ内で繰り返し実行されるブロック全体を表しforます。forステートメントの後にセミコロンを付けるのはよくある間違いです。

于 2013-03-11T17:49:44.090 に答える
0

sortjava Collectionsクラスのメソッドを使用しComparator、マークを(昇順で)並べ替えてから、マークがしきい値よりも大きいことがわかるまでカウントします。

これは適切でしょうか?

于 2013-03-11T17:52:10.643 に答える
0

また、平均点と最高点をどのように見つけるのですか?

トップマークを取得するには、より高いマークが見つかるたびに置き換える変数を作成します。すでにループしている場合は、ループ内のすべてのマークを合計し、それを合計人数で割ることで平均を見つけることができます。ここでは、同じループで両方を実行しました。

int totalMark = 0;
int topMark = 0;
for (int i=0; i< people.size(); i++) {
    int mark = people.get(i).getMark(); 
    if (mark > topMark) {
        topMark = mark;
    }
    totalMark += mark;
}
int averageMark = totalMark / people.size();
于 2013-03-11T19:06:39.590 に答える