【问题标题】:Show two highest N numbers c#显示两个最高的 N 数字 c#
【发布时间】:2018-10-13 05:40:12
【问题描述】:

我有一个问题,我想知道如何在 CONSOLE 上显示 N 个输入数字中最高的 2 个?我正在做这样的事情:

Console.WriteLine("Enter the weight of the fish:");
if(decimal.TryParse(Console.ReadLine(), out _fishWeight))
{
    if (_fishWeight > _highest2)
    {
        _highest = _fishWeight;
        if (_fishWeight < _highest1)
        {
            _highest = _fishWeight;
        }
    }       
} 

但它不起作用。它只显示了 _highest1 而不是其他的 _highest...

如果有人可以帮助我,我会很高兴!

【问题讨论】:

  • 您正在设置_highest,但与_highest2_highest1 相比,第二个做得更少,是那些错别字吗?在任何情况下,您都需要与任何变量进行比较,如果它更高,则将第二高设置为最高,然后将最高设置为当前值。然后,如果它不高于最高值,则与第二高值进行比较并进行相应设置。
  • 将它们全部添加到列表中,对其进行排序,显示前两个数字。
  • 下次使用step by step debugging检查您的代码。

标签: c# console numbers highest


【解决方案1】:

你想要更多的东西

if (_fishweight > _highest)
{
    _highest2 = _highest;
    _highest = _fishweight;
}
else if(_fishweight > _highest2)
{
    _highest2 = _fishweight;
}

或者,如果您想要更灵活的排行榜

// declare something like...

    private List<int> _leaderboard = new List<int>();
    private readonly int _leaderboardCount = 2;

// then update it like...    
    _leaderboard.Add(_fishweight);
    _leaderboard = _leaderboard.OrderByDescending(v => v).Take(_leaderboardCount).ToList();

现在您已获得前 2 名,但您可以在以后轻松将其更改为前 10 名。

【讨论】:

  • 谢谢尼古拉斯!!我使用了第一个公式并且工作得很好。太感谢了! :D
【解决方案2】:

Math.Max() 是你的朋友。无需手动比较,只需输入两个值,它会输出其中最高的值并将其设置为您的_heighestWeight

while (true)
{
    Console.Write("Enter the weight of the fish: ");
    var input = Console.ReadLine();
    if (decimal.TryParse(input, out _fishWeight))
    {
        break;
    }

    Console.WriteLine("Please only enter a decimal number");
    Console.Clear();
}

_heighestWeight = Math.Max(_fishWeight, _heighestWeight);

我还添加了一个while 循环,以防他们输入小数以外的其他内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 2019-10-10
    • 2020-06-09
    • 1970-01-01
    • 2011-01-28
    • 2021-11-07
    • 1970-01-01
    相关资源
    最近更新 更多