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

本文关键字:运行 两个 函数 循环 不能 一个 | 更新日期: 2023-09-27 18:14:18

我想做的是让它在一个循环中,计算机检查输入的数字是否首先不是小数,同时我想确保数字在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();
            }
        }

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

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....
    }
}

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

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

所有在inout有效时应该执行的代码现在应该把放到循环之外,而不是放在循环内。