繁体   English   中英

如何在 C# 中为用户输入正确使用带有 null int 值的 while 循环

[英]How to properly use while loop with null int values for user input in C#

我基本上是在尝试继续循环,直到用户输入所需的输入。 如果输入小于 1 或大于 7,我就可以使用它。 但是,如果用户输入空格字符或只是按 ENTER,我仍然会收到“未处理的异常”错误。 非常感谢任何帮助或建议。

这是代码-

   static void Main(string[] args)
    {
        string[] daysOfWeek = {
            "Sunday",
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday"
        };

        System.Console.WriteLine("  Which day would you like?");
        System.Console.Write("  Choose from 1 and 7. ");
        int? iDay = int.Parse(Console.ReadLine());

        // Loops until user enters number from 1 - 7
        while ( iDay < 1 || iDay > 7 || iDay is null )
        {       
                if ( iDay > 0 && iDay < 8)
                {
                    break;
                }
            System.Console.Write("  < INVALID - CHOOSE FROM 1 AND 7 > ");
            iDay = int.Parse(Console.ReadLine()); 
        }

            string chosenDay = daysOfWeek[(int)iDay-1];
            System.Console.WriteLine($"You chose {chosenDay}.");
        

使用int.TryParse

bool isValid = int.TryParse(Console.ReadLine(), out int iDay);

// Loops until user enters number from 1 - 7
while (!isValid || iDay < 1 || iDay > 7)
{
    // This is redundant to the while clause
    //if (iDay > 0 && iDay < 8)
    //{
    //    break;
    //}
    System.Console.Write("  < INVALID - CHOOSE FROM 1 AND 7 > ");
    isValid = int.TryParse(Console.ReadLine(), out iDay);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM