2

このように動作するプログラムがあります。クラスの生徒数を入力します。たとえば、3 とします。次に、学生証を入力し、その後に 4 つの数字を入力します。最初の 3 つは、平均してクラス全体の成績の 80% になる成績であり、4 番目の数字は、クラス全体の成績の 20% である最終試験を受けた後に生徒が取得したい成績です。

Example:  
Enter number of students in class: 3  
(Here you would enter the data)  
123456 90 90 90 90  
543216 70 80 80 70  
435366 80 80 80 90  

次に、出力は次のようにする必要があります。

123456 90 //(The minimum score the student must get on their final to get the grade they   want)  
435366 130  
543216 44  

私はすべての数学を落としました、そしてそれはうまくいきます。情報を入力すると、正しい数値が返されます。私が抱えている問題は、出力を最小から最大の順序で表示することです。行がクラスの生徒数、列が 5 (ID、学年 1、2、3、希望する学年) のテーブルを使用して情報を入力しました。

for (int count = 0; count < numberOfStudents(in this case, 3); ++count)  
{  
    StudentID = The first ID I entered (123456);    
    Grade = *a bit of math to solve for this*;  
}  

再びループに入ると、StudentID と Grade の値が置き換えられるため、それらを何かと比較してどちらが小さいかを確認することはできません。StudentID を配列に入れて比較するというアイデアがありましたが、問題は、対応する成績を ID と一緒に取得する方法を考え出すことでした。

何か案は?

4

1 に答える 1

6

StudentID、結果、希望する最終成績を含むクラスを作成する必要があるようです。次に、生徒のコレクションを取得できます (たとえば、 aStudent[]または aList<Student>を使用して、既存の結果で並べ替えCollections.sortます (並べ替えで成績を比較するには、Studentimplementを作成するか、 which implements をComparable<Student>記述します)。GradeComparatorComparator<Student>

一般的な原則として、複数のコレクションがある場合、あるコレクションの各要素が他のコレクションの同じ要素インデックスに対応している場合は、データを 1 つの型にカプセル化し、次にその型のコレクションにすることを検討する必要があります。したがって、別の例として、次の代わりに:

String[] addressLines1;
String[] addressLines2;
String[] cities;
String[] zipCodes;
String[] countries;

...Address[]または がList<Address>あり、Addressクラスには 1 行目、2 行目、都市、郵便番号、および国のプロパティがありました。

于 2013-10-12T05:32:02.263 に答える