c#不能在循环中运行两个函数?

时间:2016-10-22 22:44:28

标签: c#

我想要做的是让它在循环内,计算机检查输入的数字是否首先不是小数,同时我想确保数字在1 - 100范围内我的代码现在适用于关于数字不是小数的第一个函数,所以当我输入小数时,会显示一条错误消息,告诉用户继续添加另一个数字,直到添加一个整数,然后它跑到下一部分。但是,当我输入一个超出范围的数字时,它似乎无法工作,错误信息不会弹出,条件似乎不起作用。我想知道的是我如何得到这两个部分,小数和范围检查同时工作。我对编码很陌生,所以任何解释都很简单,以便我能理解。提前谢谢!

        string inputcost;
        string inputmoney;
        int validcost;
        int validmoney;
        int changereq;

        Console.Write("Please Enter The Cost, In Pennies, Of The Item You Have Purchased: ");
        inputcost = Console.ReadLine();
        bool result = int.TryParse(inputcost, out validcost);

        while (!int.TryParse(inputcost, out validcost))
        {   

            if (result == true )
            {                    
                Console.Write("Valid Value");
            }
            if (result == false)
            {
                Console.Write("You Cannot Enter Decimals. Please Enter A Valid Integer Value.");
                Console.WriteLine();
                inputcost = Console.ReadLine();
            }
            if (validcost < 100 && validcost > 1)
            {
                Console.Write("valid value");
            }
            else
            {
                Console.Write("invalid value.please enter a number between 1                      and 100 ");
                Console.ReadLine();
            }
        }

2 个答案:

答案 0 :(得分:1)

该行

while (!int.TryParse(inputcost, out validcost))

表示仅当用户键入无法转换为整数的内容时才进入while循环。如果它是一个有效的整数,则永远不会到达while循环中的代码,因此,永远不会执行对有效范围的测试

而是将所有内容放在无限循环中并提供破解程序的方法(键入x以退出)

while (true)
{   
    Console.Write("Please Enter The Cost, In Pennies, Of The Item You Have Purchased: (type x to quit)");
    inputcost = Console.ReadLine();

    // Check if the user wants to stop executing the program
    if(inputcost == "x") 
        break;

    // Check if it is a valid integer 
    bool result = int.TryParse(inputcost, out validcost);
    if (!result)
    {
        Console.WriteLine("You Cannot Enter Decimals (or strings). Please Enter A Valid Integer Value.");
    }
    else if (validcost > 100 || validcost < 1)
    {
        Console.WriteLine("invalid value.please enter a number between 1 and 100 ");
    }
    else
    {
        Console.WriteLine("Valid value");
        // other code block that works with the input number....
    }
}

答案 1 :(得分:0)

另外,为你的循环使用另一个条件,首先检查一个整数,然后检查它是否在范围内:

while (!int.TryParse(inputcost, out validcost)) || validCost < 1 ||  validCost > 100)
{
    Console.WriteLine("Please enter an integer between 1 and 100");
    inputCost = Console.ReadLine();
}

当你的输入有效时应该执行的所有代码现在应该超越循环,而不是 in