Почему мой цикл do-while в c # не работает? - PullRequest
0 голосов
/ 27 сентября 2019

Моя программа - это когда кто-то вводит температуру до тех пор, пока он не введет 999, температура должна быть в диапазоне от -20 до 130. После ввода 999 предполагается вычислить общее количество введенных температур и среднюю температуру.Я не уверен, где я не так с этим кодом, у меня есть небольшие проблемы с циклами.любая помощь приветствуется!

    static void Main(string[] args)
    {
        int temp = 0, total = 0, sum = 0;
        double avg;
        string = tempString;

        WriteLine("Enter daily high temperatures, to stop program enter 999.");
        tempString = ReadLine();
        temp = Convert.ToInt32(tempString);

        do
        {
            if (temp >= 20 && temp <= 130)
            {
                WriteLine("Enter daily high temperatures, to stop program enter 999");
                ReadLine();
                total++;
            }
            else
            {
                WriteLine("Valid temperatures range from -20 to 130. Please reenter temperature.");
                ReadLine();
            }
        } while (temp != 999);
       sum += temp;
        avg = sum / total;
        WriteLine("The number of temperatures entered: {0} /n The average temperature is: {1}.", total, avg);

    }

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Вы хотите добавить темп к сумме в своем первом операторе if, прежде чем читать следующий темп.Также установите temp для следующего ReadLine в каждом операторе if.Кроме того, у вас было 20 в первом операторе if вместо -20.Наконец, добавьте ReadLine в конец, чтобы консоль не закрывалась сразу после ввода 999.

    static void Main(string[] args)
    {
        int temp = 0, total = 0, sum = 0;
        double avg;
        string tempString;

        Console.WriteLine("Enter daily high temperatures, to stop program enter 999.");
        tempString = Console.ReadLine();
        temp = Convert.ToInt32(tempString);

        do
        {
            if (temp >= -20 && temp <= 130)
            {
                sum += temp;
                Console.WriteLine("Enter daily high temperatures, to stop program enter 999");
                temp = Convert.ToInt32(Console.ReadLine());
                total++;
            }
            else
            {
                Console.WriteLine("Valid temperatures range from -20 to 130. Please reenter temperature.");
                temp = Convert.ToInt32(Console.ReadLine());
            }
        } while (temp != 999);
        avg = sum / total;
        Console.WriteLine("The number of temperatures entered: {0} /n The average temperature is: {1}.", total, avg);
        Console.ReadLine();
    }
0 голосов
/ 27 сентября 2019

Обновите ваш код до следующего -

static void Main(string[] args)
{
int temp = 0, total = 0, sum = 0;
            double avg;
            string  tempString=string.Empty;

            Console.WriteLine("Enter daily high temperatures, to stop program enter 999.");
            tempString = Console.ReadLine();
            temp = Convert.ToInt32(tempString);

            while (temp != 999)
            {
                if (temp >= 20 && temp <= 130)
                {
                    Console.WriteLine("Enter daily high temperatures, to stop program enter 999");
                    tempString = Console.ReadLine();
                    temp = Convert.ToInt32(tempString);
                    sum += temp;
                    total++;
                }
                else
                {
                    Console.WriteLine("Valid temperatures range from -20 to 130. Please reenter temperature.");
                    Console.ReadLine();
                }
            }



            avg = sum / total;
            Console.WriteLine("The number of temperatures entered: {0} {2}The average temperature is: {1}.", total, avg,"\n");
}
...