大家好,我试图创建一个NumberList类,该类将跟踪任意数量的浮点值的列表。还可以使用私有列表对这些值执行运算,以跟踪数字。
在创建四种方法时遇到了麻烦:
此方法从列表中删除所有低于阈值的数字。如果myList是一个包含{1、2、3}的NumberList,则调用myList.DeleteBelow(1.5)将删除1,仅留下{2、3}。
此方法从列表中删除所有超过阈值的数字。如果myList是一个包含{1、2、3}的NumberList,则调用myList.DeleteAbove(1.5)将删除2和3,仅保留{1}。
此方法计算列表中有多少个数字低于阈值。如果myList是一个包含{1、2、3}的NumberList,则调用myList.CountBelow(2.5)将返回2。
此方法计算列表中超过阈值的数字。如果myList是一个包含{1、2、3}的NumberList,则调用myList.CountAbove(2.5)将返回1。
我想知道是否有人能够帮助我/指出正确的方向?
〜干杯
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Numbers
{
public class NumberList
{
// Your private List<float> field should go here
private List<float> myList;
public void Add(float number)
{
myList.Add(3);
}
public List<float> Numbers()
{
return myList;
}
public float Minimum()
{
return myList.Min();
}
public float Maximum()
{
return myList.Max();
}
public float Sum()
{
return myList.Sum();
}
public float Average()
{
return myList.Sum() /myList.Count();
}
public int Count()
{
return myList.Count();
}
public void DeleteBelow(float threshold)
{
// myList.DeleteBelow(1.5)
}
public void DeleteAbove(float threshold)
{
// myList.DeleteAbove(1.5);
}
public int CountBelow(float threshold)
{
int CountBelow = 0;
for (int i = myList.Count is; i > 0; i--)
{
if (NumberList(i) > threshold) ;
{
//...
}
}
public int CountAbove(float threshold)
{
// return myList.CountAbove(2.5);
}
}
答案 0 :(得分:0)
public void DeleteBelow(float threshold)
{
myList.RemoveAll(x => x < threshold);
}
public void DeleteAbove(float threshold)
{
myList.RemoveAll(x => x > threshold);
}
public int CountBelow(float threshold)
{
return myList.Count(x => x < threshold);
}
public int CountAbove(float threshold)
{
return myList.Count(x => x > threshold);
}
答案 1 :(得分:0)
您可以使用foreach循环遍历列表的所有项目,然后可以检查列表中的每个元素是否超过阈值。当它做完你想做的事。
答案 2 :(得分:0)
我会鼓励您遵循immutability的道路。这将使您的类更易于维护,因为它可以使您避免讨厌的副作用(如果使用的是DeleteBelow
,则通常在DeleteAbove
和myList.Remove()
中)。
我还简化了Average
,因为LINQ已经提供了这种方法。
public sealed class NumberList
{
private readonly IEnumerable<float> myList;
public NumberList(IEnumerable<float> numbers) => myList = numbers;
public NumberList Add(float number) => new NumberList(myList.Concat(new[] { number }));
public List<float> Numbers() => myList.ToList();
public float Minimum() => myList.Min();
public float Maximum() => myList.Max();
public float Sum() => myList.Sum();
public float Average() => myList.Average();
public int Count() => myList.Count();
public int CountBelow(float threshold) => myList.Count(n => n < threshold);
public int CountAbove(float threshold) => myList.Count(n => n > threshold);
public NumberList DeleteBelow(float threshold) => new NumberList(myList.Where(n => n >= threshold));
public NumberList DeleteAbove(float threshold) => new NumberList(myList.Where(n => n <= threshold));
}