我想编写一个代码,在该代码中,从键盘连续输入数字,直到用户输入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
,因此即使是字母也要递增。其次,您的条件检查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);
请注意,如果isNumber
为false
,则在进行true
之前将其设置回continue
,以保持循环状态。最后,在输入为零的情况下将count++
after设置为break
消除了对计数器的调整需求,并简单地让您跳出了循环。