首页 > 解决方案 > 循环中的 TryParse 处理

问题描述

TryParse用来检查用户是否在循环中输入整数,如果用户输入任何字符或非整数值,用户将收到无效消息,循环进入下一次迭代。

我希望用户重新输入相同的迭代。

int[] number = new int[5];
int newSum = 0;
int outValue;
Console.Write("Enter Five Integer Digits: \n");
for (int i = 0; i <= number.Length - 1; i++)
{
    Console.Write("Number {0}: ", i);
    bool Parse = Int32.TryParse(Console.ReadLine(), out outValue);
    if (Parse)
    {
        number[i] = outValue;
    }
    else
    {
        Console.WriteLine("You Have Entered InValid Format: ");
    }
    newSum += number[i];
}
Console.WriteLine("Sun of Numbers :{0}", newSum);
I expected the output to be
Number 2: h
You Have Entered InValid Format:
Number 2: 
But the actual output is 
Number 2: h
You Have Entered InValid Format:
Number 3:

标签: c#

解决方案


我会用以下方式重写你的循环:

for (int i = 0; i <= number.Length - 1; i++)
{
    Console.Write("Number {0}: ", i);
    bool Parse = Int32.TryParse(Console.ReadLine(), out outValue);
    if (Parse)
    {
        // if parsing is successfull, then add to array and to sum :)
        number[i] = outValue;
        newSum += number[i];
    }
    else
    {
        Console.WriteLine("You Have Entered InValid Format: ");
        // just decrement iterator to repeat this iteration
        i--;
    }
}

推荐阅读