【问题标题】:How do I determine the highest and lowest integer in C#?如何确定 C# 中的最高和最低整数?
【发布时间】:2011-10-25 00:20:28
【问题描述】:

我想知道如何从用户输入的任何数字中确定最大数字和最小数字。我们应该在用户输入 99 后显示它们。我发现的所有东西都使用数组,我们还没有学习这些。请帮忙!

        string input;
        int input2;
        Console.WriteLine("Enter an integer");
        input = Console.ReadLine();
        input2 = Convert.ToInt32(input);


        while (input2 != 99)
        {
            Console.WriteLine("Enter an integer");
            input = Console.ReadLine();
            input2 = Convert.ToInt32(input);
        }

【问题讨论】:

  • 忽略你了解 C#,你将如何实现该算法?尝试用英语描述它。然后尝试使用你所知道的 C# 重写它。
  • 你能写出从数组中找出最高(或最低)数的程序吗?先写一个只求最高/最低的程序,然后把两者结合起来
  • 顺便说一句,您可能希望使用 int.TryParse 代替 Convert.ToInt32 以避免用户输入“Fish!”时出现异常。
  • 你说你没有学过数组,但你没有说你学到了什么。

标签: c#


【解决方案1】:

命令式编程的思想是给出一系列语句(算法),这些语句(算法)会改变状态(一组变量),直到它包含所需的结果。

例如,您的程序会更改变量inputinput2 的内容,直到input2 包含值99

要查找最大和最小整数,请定义两个变量highestlowest。在while 循环中更改它们的内容,以便在每次迭代后,它们分别包含最高和最低整数,同时考虑当前输入值。

【讨论】:

  • 我做了最高和最低,并在第一行代码中将它们设置为零,但我不明白如何将最高和最低的内容更改为整数。我的意思是,我知道如何更改它,但我不知道如何让它“知道”该值低于或高于之前的输入。
  • @JoshClary,想一想。你怎么知道数字 6 比数字 2 高?你如何比较它们?
  • 好吧,我想我知道现在该做什么了。我创建了 'highest' 和 'lowest' 并将它们设置为 0,然后在其中输入一行代码,上面写着 if (input2 > highest) highest = input2; if (input2 < lowest) lowest = input2;
  • 现在唯一的问题是最低永远不会低于 0。所以我有点卡在下一步该怎么做。
  • 其实我想通了。通过最初将它们设置为 99,可以设置最低值和最高值,因为我输入了至少一个大于 99 和一个小于 99 的值。谢谢大家的帮助,非常感谢。
【解决方案2】:

如果您将整数存储在列表中,您可以使用 linq 扩展方法 .Min() 返回最小整数,使用 .Max() 返回最大整数。

【讨论】:

    【解决方案3】:

    您需要一些变量来记录最大值和最小值(您应该将它们初始化为什么值?)。在每个用户输入/循环迭代中,您应该将用户输入与这些变量的当前值进行比较,并在必要时更新它们(有几种方法可以做到这一点——有些方法比其他方法更详细)。您需要决定(检查规范)如何处理 99,例如这算作最小值还是最大值?

    【讨论】:

      【解决方案4】:
      int min = int.Max;
      int max = int.Min;
      
      // ...
      
      while (input2 != 99) {
          // ...
          min = Math.Min(min, input2);
          max = Math.Max(max, input2);
      }
      
      // At this point, min and max contain the desired result.
      

      这里有几个极端情况,例如,如果用户立即输入 99 或者她只输入 int.Max 以获取 min(或 int.Min 以获取 max),但我会让你处理...

      【讨论】:

      • @Ricibob 这是我能想到的用于表达基本思想的最简洁的格式。你会注意到我没有生成完整的代码,我提到他应该考虑边缘情况,所以这几乎不是他可以复制粘贴而不试图理解的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 2019-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多