我正在编写一个代码,从键盘连续输入数字,直到用户输入 0。之后,程序应该显示以前输入的数字的计数。
规则是:
我的代码适用于数字,但如果我的输入是字母,它就像输入 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 numberFromInput
is 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);
请注意,如果isNumber
is false
,我们true
在执行 the 之前将其设置回continue
以保持循环。最后,有count++
后了break
的情况下,输入为零无需调整柜台,只是让你打破循环了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句