【问题标题】:While loop just repeats [duplicate]虽然循环只是重复[重复]
【发布时间】:2018-05-09 13:19:20
【问题描述】:

所以我的程序打算无限次运行,直到用户输入 -999。使用这种当前设置,当输入任何数字时,它会喷出所有文本并忽略输入的任何内容。

    static void Main(string[] args)
    {
        //Local Variable Declaration//

        const double rate1 = 10;
        const double rate2 = 3;
        const double maxCharge = 50;
        double charge;
        int hoursRented;


        while (true)
        {
            Console.WriteLine("Enter number of hours (-999 to quit) : ");
            hoursRented = Console.Read();
            if (hoursRented == -999)
                break;

            else

                if (hoursRented <= 3)
            {
                charge = hoursRented * rate1;
            }
            else
            {
                charge = (3 * rate1) + ((hoursRented - 3) * rate2);
            }

            if (charge > maxCharge)
            {
                charge = maxCharge;
            }

            Console.WriteLine("Are you a member? (Y/N) : ");
            string memberStatus = Console.ReadLine();
            string upperstring = memberStatus.ToUpper();
            if (memberStatus.Equals("Y"))
            {
                charge = charge - (charge * 1 / 10);
            }

            double TotalCharge = +charge;

            Console.WriteLine("Customer Charge : {0}   Total Charge To Date {1} :  ", charge, TotalCharge);
        }
    }
}

}

【问题讨论】:

  • 顺便说一句,当您使用 while 时,您应该使用标志来退出循环...while(continue) 并在某些时候continue = false
  • @MatíasFidemraizer OP 已经有一个 break 声明。前面的逻辑是否正确是完全不同的情况;)
  • 你试过用Console.ReadLine()代替Console.Read()

标签: c# loops while-loop


【解决方案1】:

截至Console.Read 的文档:

从标准输入流中读取下一个字符。

该方法只读取一个字符。要读取整行,请改用ReadLine

int hours;
if(int.TryParse(Console.ReadLine(), out hours) && hours == -999)
    break;       

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2017-04-05
    相关资源
    最近更新 更多