C# 循环中的最大值和最小值

Posted

技术标签:

【中文标题】C# 循环中的最大值和最小值【英文标题】:Max and Min in a loop for C# 【发布时间】:2021-11-27 02:11:40 【问题描述】:

我正在编写一个代码,询问用户“有多少标记?”然后他们输入他们提到的分数。然后打印出最大标记和最小标记。

            int MarkNumber;
            Console.Write("How many marks are there?: ");
            MarkNumber = Convert.ToInt32(Console.ReadLine());

            for (int SchoolM = 0; SchoolM < MarkNumber; SchoolM++)
             
                Console.Write("Input a Mark: ");
                Console.ReadLine();                   
            

我不是最擅长编码,所以我不知道如何在循环中找到最大值和最小值。我起身到他们能够输入标记的部分,但我不确定如何找到最大值和最小值。我已经查找了如何计算最大值和最小值,但它通常显示为在数组中查找最大值和最小值,这不是我想要做的。

【问题讨论】:

循环前:int currentMark; int min = 0; int max = 0;。循环内部:currentMark = Convert.ToInt32(Console.ReadLine()); if (currentMark &gt; max) max = currentMark; else if (currentMark &lt; min) min = currentMark;。或者,您可以将标记添加到列表中,然后计算最小值和最大值。 旁注:在处理用户输入时,总是首选int.TryParse() 而不是Convert.ToInt32() 哦,好吧,我会使用其他替代方案,但我仍然缺乏经验。谢谢! 【参考方案1】:

您应该使用变量一个来表示最大数量,另一个用于较小的数量

也许是这样的

 static void Main(string[] args) 

    
        int MarkNumber;
        int iminor = -1;
        int imax = 0;
        Console.Write("How many marks are there?: ");
        MarkNumber = Convert.ToInt32(Console.ReadLine());

        for (int SchoolM = 0; SchoolM < MarkNumber; SchoolM++)
         
            Console.Write("Input a Mark: ");
            int mark = 0;
            do
            
                var userInput = Console.ReadLine();
                if (!int.TryParse(userInput, out int i))
                
                    Console.Write("Try again ");
                
                else
                
                    mark = i;
                    break;
                                    
             while (true);            
            if (mark > imax) imax = mark;
            if (mark < iminor) iminor = mark;
        
        Console.WriteLine($" Minor Mark iminor Max Mark imax");
    

【讨论】:

我认为 minor 应该初始化为 Int32.MaxValue 否则如果所有标记都是正数,min 将始终为零。 哦,是的,现在我想这样做对我来说更容易。感谢您的指导! @carlos-cocom 你应该将imax 初始化为System.Int32.MinValueiminor 初始化为System.Int32.MaxValue。这样,脚本还可以处理作为有效整数的负数。而Convert.ToInt32() 可能会抛出异常,因此也应该处理它,要么将其包装在 try 块中,要么使用更具防御性的样式,例如 Int32.TryParse() @ワイきんぐ 我理解,但在这种情况下,更简单的学习只是为了学习,好吧,或者你怎么看? 如果用户只输入负数,你有imax 的错误,所以我肯定会修复它。 :) *** 也是关于发布其他人可能(阅读:将)复制粘贴的无错误代码。

以上是关于C# 循环中的最大值和最小值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中的键和值列表上使用 Lambda 函数获取最大值和最小值?

C#获取一个数组中的最大值最小值平均值

ios 快速获取数组中的最大值、最小值

c语言中使用指针求一组数组的最小值!只要最小值!!

第三节 java 数组(循环遍历获取数组的最值(最大值和最小值)选择排序冒泡排序练习控制台输出大写的A)

如何在while循环中找到最大值和最小值 - c