使用循环来确定数字是否有效c#

时间:2015-08-11 02:35:54

标签: c# loops

我想让用户输入2-12的号码。我想使用一个循环来检查是否有效,但是我只是在显示结果一次时遇到了麻烦。

Console.WriteLine("Enter number between 2 and 12");
int x = int.Parse(Console.ReadLine());

bool isValid = true;
for(int p = 2; p < 13; p++)
{
    if(p > x)
    {
        isValid = true;
    }
    else 
        isValid = false;

    if(isValid == true)
    {
        Console.WriteLine("{0} is good", x);
    }
    else
        Console.WriteLine("not valid");
}

6 个答案:

答案 0 :(得分:1)

为什么需要循环来检查范围内的值?

试试这个

if(x>=2 && x<=12)
   Console.WriteLine("{0} is good", x);
else
  Console.WriteLine("not valid");

答案 1 :(得分:1)

为什么要为此使用循环?

您可以通过以下方式检查数字是否在2到12之间:

int x = int.Parse(Console.ReadLine());

bool isValid = true;
if (x < 2 || x > 12)
{
    isValid = false;
}

否则,如果您仍想进行循环,可以试试这个:

Console.WriteLine("Enter a number between 2 and 12");
int x = int.Parse(Console.ReadLine());

bool isValid = false;
for(int p=2; p<13; p++)
{
    if(x == p)
    {
        isValid = true;
        break;
    }
}

if(isValid==true)
{
    Console.WriteLine("{0} is good", x);
}
else
{
    Console.WriteLine("not valid");
}

修改

也只是一个建议,但你应该小心使用Parse。如果您使用Parse并且用户输入了非数字字符或输入的数字大于/小于int的允许值,则您的应用将停止,并显示FormatException错误。

要解决此问题,您可以使用TryParse代替:

int x;
bool result = int.TryParse(Console.ReadLine(), out x);

if (result)
{
    // Put your for loop or if statement here
}
else
{
    Console.WriteLine("Error: Invalid number was detected.");
}

答案 2 :(得分:0)

如果您尝试验证该号码是否在2-12范围内,则应移除您的循环并使用此代码

bool isValid = true;
if (x < 2 || x > 12) {
    isValid = false;
}

或只是

bool isValid = x >= 2 && x <= 12;

答案 3 :(得分:0)

你想要达到什么目的?上面的示例逻辑中存在一个缺陷,您只需要询问一次,然后循环10次。为了简化,您可以循环,然后询问用户输入,直到输入0并且循环将退出。

样品:

static void Main(string[] args)
{
    int x = 0;
    do
    {
        Console.WriteLine("Enter number between 2 and 12. (0 to exit)");
        x = int.Parse(Console.ReadLine());
        if (x >= 2 && x <= 12)
        {
            Console.WriteLine("{0} is good", x);
        }
        else if(x != 0)
        {
            Console.WriteLine("{0} is not valid", x);
        }
    } while (x != 0);
}

答案 4 :(得分:0)

Console.WriteLine("Enter number between 2 and 12: ");
int x = int.Parse(Console.ReadLine());
bool isValid = (2 <= x && x <= 12);
Console.WriteLine("{0} is {1}valid", x, isValid ? "" : "not ");

答案 5 :(得分:0)

这里试试这个

  static void Main(string[] args)
    {


        while (true)
        {
            Console.WriteLine("Enter number between 2 and 12");
            int x = int.Parse(Console.ReadLine());

            if (!Enumerable.Range(1, 12).Contains(x))
            {
                Console.WriteLine("{0} Its not Good\n",x);
            }
            else
            {
                Console.WriteLine("{0} Its  Good\n",x);
                break;
            }
        }

        Console.WriteLine("Press any key to exit..");
        Console.ReadKey();
    }