如果输入值不是数字,则应在 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}");

    }
}

}

图书

你有两个问题。首先,您在count获得输入后立即递增,因此即使是一个字母,它也会递增。其次,您的条件检查 if numberFromInputis 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);

请注意,如果isNumberis false,我们true在执行 the 之前将其设置回continue以保持循环。最后,有count++ break的情况下,输入为零无需调整柜台,只是让你打破循环了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章