我需要从一组arraylists中获得总体最小值和最大值。每个arraylist是学生的5个等级。
学生数量和输入的成绩(在static void main中完成):
Console.WriteLine("Input the number of students: ");
int n = int.Parse(Console.ReadLine());
Student[] students = new Student[n];
for (int i = 0; i < n; i++)
{
students[i] = new Student();
for (int j = 0; j < 5; j++)
{
Console.WriteLine($"Enter grade {j} for student {i}: ");
double grade = double.Parse(Console.ReadLine());
students[i].addGrade(grade);
}
}
成绩的arrayList在Student类中创建:
private ArrayList grades;
public Student()
{
grades = new ArrayList();
}
public void addGrade(double val)
{
grades.Add(val);
}
然后分别使用getMin和getMax函数中的sort来计算每个学生的最小值和最大值。这些函数位于Student类中:
public object getMax()
{
ArrayList sortArrayList = grades;
sortArrayList.Sort();
sortArrayList.Reverse();
var max = sortArrayList[0];
return max;
}
public object getMin()
{
ArrayList sortArrayList = grades;
sortArrayList.Sort();
var min = sortArrayList[0];
return min;
}
我被告知要迭代每个并提取每个的最小值和最大值,然后比较它们。我已经获得了每个的最小值和最大值,但是要比较阵列列表&#39;最小值和最大值是我有逻辑块的地方。
答案 0 :(得分:0)
由于OP的建议,我保持这个答案的开放。
我建议List<Student>
并使用LINQ评分为List<int>
或List<double>
:
每位学生的最高成绩:
grades.Max();
您可以让Student.getMax()
返回该单行。
总体最大值:
var overallMax = students.OrderByDescending(st=> st.getMax())
.First().getMax();
总体分钟:
Student.getMin()
中的只返回grades.Min()
然后
var overallMin = students.OrderByAscending(st=> st.getMin())
.First().getMin();