-3

如何在 C# 中输入?并在该输入上使用循环。

到目前为止,这是我的代码

static void Main(string[] args)   
 {

            int[] ar = new int[10002];
            int n = Convert.ToInt32( Console.ReadLine() );

            for( int i = 0;i < n; i++ )
            {
                ar[i] = Convert.ToInt32( Console.ReadLine() );
            }

            for ( int i = 0; i < n; i++ )
            {
                Console.WriteLine(ar[i]);
            }
            Console.ReadKey();

   }
4

2 回答 2

2

这是在您的案例中处理无效输入的两种方法的简单示例。您可以做的一件事就是未能向用户提供输入不正确的信息。第二种可能性是将无效输入视为一个null值。

这只是一个简单的例子——通常你不应该默默地失败(这里:返回 anull而不是抱怨),你不应该使用null值作为特殊函数返回值的指示符。还有一个很好的例子是不完成程序,而是使用循环反复询问用户,直到他们了解数字的样子;)

这些所有问题都没有解决,作为读者的实践;)

static int? ReadInteger()
{
    int result;

    if (!int.TryParse(Console.ReadLine(), out result))
    {
        return null;
    }

    return result;
}

static void Main(string[] args)   
{
    int?[] ar = new int?[10002];
    int? n = ReadInteger();

    if (!n.HasValue)
    {
        Console.WriteLine("Please input a correct integer");
        return;
    }

    for( int i = 0;i < n.Value; i++ )
    {
        ar[i] = ReadInteger();
    }

    for ( int i = 0; i < n.Value; i++ )
    {
        Console.WriteLine(ar[i].HasValue
            ? ar[i].Value.ToString() : "Incorrect input");
    }

    Console.ReadKey();
}
于 2013-10-23T11:42:59.563 回答
0

我试图构建这个尽可能接近你的实现。BartoszKP 的另一个答案应该在完整的场景中使用。

    static void Main(string[] args)
    {
        int[] ar = new int[10002];
        int n;
        if (int.TryParse(Console.ReadLine(), out n))
        {
            int nr;
            for (int i = 0; i < n; i++)
            {                
                if (int.TryParse(Console.ReadLine(), out nr))
                {
                    ar[i] = nr;
                }
            }

            for (int i = 0; i < n; i++)
            {
                Console.WriteLine(ar[i]);
            }
        }
        Console.ReadKey();
    }
于 2013-10-23T11:44:02.933 回答