【发布时间】:2018-10-30 07:12:10
【问题描述】:
我需要从一组数组列表中得到一个整体的最小值和最大值。每个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;
}
我被告知要遍历每个并提取每个的最小值和最大值,然后比较它们。我已经得到了每个的最小值和最大值,但是比较 arrayLists 的最小值和最大值是我有一个逻辑块的地方。
【问题讨论】:
-
不鼓励使用 arraylist 来支持 list
,顺便说一句。 -
感谢您指出这一点,但这是否可以更轻松地比较列表的最小值和最大值。你也能告诉我为什么我被否决了吗?我不够具体吗?
-
我刚刚意识到我之前的评论可能会以一种令人反感的方式出现,这并不是故意的。
-
这里没有冒犯,不,不是我的反对意见。 List
内置了许多 Linq 好东西;例如:最小值和最大值,然后是一些函数。但由于我避免使用 ArrayList,我无法评论或与任何能力进行比较。 -
这里是如何从数组中找到最大值的示例。 stackoverflow.com/questions/1690428/… 它在 C 中,但您只需要在 C# 中具有相同的逻辑。逻辑在 for 循环中。
标签: c# arrays sorting arraylist