如果输入值不是数字,则应在c#中跳过

我想写一个代码,从键盘连续输入数字,直到用户输入0。 之后,程序应显示先前输入的数字。

规则是:

  • 从控制台获取所有输入值
  • 如果输入值不是数字,则应跳过
  • 仅使用while或do-while循环

我的代码适用于数字,但是如果我的输入为字母,则其行为类似于输入0,则停止工作 我正在尝试忽略字母并继续直到输入为0

这是我的代码:

using System;

namespace practice_01
{
class Program
{
    static void Main(string[] args)
    {
        //global variable
        int numberFromInput;
        int count = 0;
        do
        {
            //input form user
            Console.WriteLine("Please enter number: ");
            var userInput = Console.ReadLine();

            //check if input is number
            var isnumber = int.TryParse(userInput,out numberFromInput);
            count++;

            //if it's letter just skip
            if (!isnumber)
            {
                continue;
            }

            // input 0 is not part of count
            if(numberFromInput == 0)
            {
                count = count - 1;
            }
        } 
        while (numberFromInput != 0);
        Console.WriteLine($"Count of entered numbers before zero: {count}");

    }
}

}

sarah928 回答:如果输入值不是数字,则应在c#中跳过

您有两个问题。首先,一旦获得输入,您将递增count,因此即使是字母也将递增。 其次,您的条件检查numberFromInput是否为0,因此即使TryParse()失败,该值仍为0,因此退出循环。

这将同时解决两个问题:

bool isNumber = true;
do
{
    //input form user
    Console.WriteLine("Please enter number: ");
    var userInput = Console.ReadLine();

    //check if input is number
    isNumber = int.TryParse(userInput,out numberFromInput);

    //if it's letter just skip
    if (!isNumber)
    {
        isNumber = true;
        continue;
    }

    // input 0 is not part of count
    if (numberFromInput == 0)
    {
        break;
    }
    count++;
}
while (isNumber);

请注意,如果isNumberfalse,则在进行true之前,我们将其设置回continue以便停留在循环中。最后,在输入为零的情况下将count++放在break之后,在{em}之后输入paste("P1",LETTERS[1],1:12,sep="") ,就无需调整计数器,而只是让您跳出循环。

本文链接:https://www.f2er.com/3142149.html

大家都在问