Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试/捕捉循环_C#_For Loop_If Statement_Try Catch - Fatal编程技术网

C# 尝试/捕捉循环

C# 尝试/捕捉循环,c#,for-loop,if-statement,try-catch,C#,For Loop,If Statement,Try Catch,我对编程和解决问题是新手。我有一个数组,我想用用户的输入填充,但我想确保它只包含1-25之间的整数,而不包含字符串输入。我该怎么做 到目前为止,我得到的代码是: for (int i = 0; i < lottery.Length; i++) { Console.Write(i + ": "); try { input = int.Parse(Console.ReadLine()); lottery[i] = i

我对编程和解决问题是新手。我有一个数组,我想用用户的输入填充,但我想确保它只包含1-25之间的整数,而不包含字符串输入。我该怎么做

到目前为止,我得到的代码是:

for (int i = 0; i < lottery.Length; i++)
{
    Console.Write(i + ": ");

    try
    {
        input = int.Parse(Console.ReadLine());
        lottery[i] = input;
    }
    catch
    {
        Console.WriteLine("Only integers!");
        i--;
    }
}
for(int i=0;i

这段代码确保数组的唯一输入是整数,但如何让用户只写1-25之间的数字?我已经尝试了3个小时的Different if语句和其他循环,但无法解决它。请帮助。

您不应该使用异常来遍历代码。对于性能而言,异常是代价高昂的事情,如果有办法避免,您应该始终使用这种方式。
在您的情况下,应该使用而不是解析。如果输入不是有效的整数,则此TryParse不会引发异常,但在传递给方法的out参数中返回已解析的数字(如果是整数)时返回false或true

这允许编写更简单的代码,使用while循环在出现错误时继续输入

        for (int i = 0; i < lottery.Length; i++)
        {
            Console.Write(i + ": ");

            // Start the loop with an invalid input
            int input = 0;
            while(input == 0)
            {
                if(int32.TryParse(Console.ReadLine(), out input);
                {
                    // Got a valid integer, add out acceptance logic here
                    if(input > 0 && input <= 25)
                        lottery[i] = input;
                    else
                    {
                        Console.WriteLine("Type a number between 1 and 25");

                        // Not a valid range. Force the loop to continue
                        input = 0;
                    }
                }
                else
                    Console.WriteLine("Write only integers between 1-25");
            }
        }
for(int i=0;i0&&input
int[]彩票=新的int[5];
for(int i=0;i如果(0<输入&输入错误,不要使用异常控制代码。改用TryParse并删除异常。我建议在查找时查找
是什么。基本上,在
for
循环的一次迭代中,您希望不断询问数字,直到提供正确的整数值。
如果(输入>=1&&input请在答案中包含说明-仅代码没有多大帮助。
int[] lottery = new int[5];
        for (int i = 0; i < lottery.Length; i++)
        {
            Console.WriteLine(i + ": ");
            int input; 
            while(true)
            {
                string inp = Console.ReadLine();
                if(Int32.TryParse(inp, out input) == true)
                {
                    if (0 < input & input <= 25)
                    {
                        break;
                    }
                    else
                    {
                        Console.WriteLine("Only numbers 1-25");
                    }
                }
                else
                {
                    Console.WriteLine("Only Integers");
                }
                    
            }
               
            lottery[i] = input;

            
        }