Как я могу добавить данные в созданную переменную? - PullRequest
1 голос
/ 16 января 2012

Моя программа предназначена для подсчета бутылок из 4 комнат.Когда пользователь вводит команду quit, программа выплевывает, сколько бутылок собрала каждая комната.

У меня проблема, когда программа запрашивает пользователя, она запрашивает дважды, но принимает последнее введенное число в качестве выбранного roomNumber.Я также не знаю, как настроить свои операторы if, чтобы я мог непрерывно добавлять бутылки, введенные пользователем, в каждую конкретную комнату.

Можно ли использовать временную переменную для хранения введенного количества бутылок, а затем добавить его?к room1, room2, в котором хранится текущее количество бутылок?

namespace BottleDrive1 {
    class Program {
        static void Main(string[] args)
        {
            //Initialize 4 rooms. 
            int room1 = 0;
            int room2 = 0;
            int room3 = 0;
            int room4 = 0;
            int roomNumber;
            while (true)
            {
                Console.WriteLine("Enter the the room number you are in.");
                string quit = Console.ReadLine();
                if (quit == "quit")
                {
                    //Break statement allows quit to jump out of loop
                    break;
                }
                //int roomT = int.Parse(quit);//a temp variable I want to use to add bottles to the count.
                roomNumber = int.Parse(Console.ReadLine());

                if (roomNumber == 1)
                {
                    Console.WriteLine("How many bottles did room 1 collect?");
                    room1 = int.Parse(Console.ReadLine());
                }
                if (roomNumber == 2)
                {
                    Console.WriteLine("How many bottles did room 2 collect?");
                    room2 = int.Parse(Console.ReadLine());
                }
                if (roomNumber == 3)
                {
                    Console.WriteLine("How many bottles did room 3 collect?");
                    room3 = int.Parse(Console.ReadLine());
                }
                if (roomNumber == 4)
                {
                    Console.WriteLine("How many bottles did room 4 collect?");
                    room4 = int.Parse(Console.ReadLine());
                }

            }
            Console.WriteLine("Bottles each room has collected:");
            Console.WriteLine("Room one:" + room1);
            Console.WriteLine("Room two:" + room2);
            Console.WriteLine("Room three:" + room3);
            Console.WriteLine("Room four:" + room4);
            int maxRoom = room1;
            if (room2 > maxRoom)
            {
                maxRoom = 2;
            }
            if (room3 > maxRoom)
            {
                maxRoom = 3;
            }
            if (room4 > maxRoom)
            {
                maxRoom = 4;
            }
            else
            {
                maxRoom = 1;
            }
            Console.WriteLine("The winner is room " + maxRoom + "!");
        }
    }
}

Ответы [ 2 ]

4 голосов
/ 16 января 2012

Вы были очень близки!В цикле while вы читаете значение для выхода из консоли и «предлагаете» пользователю снова ввести номер комнаты, читая из консоли еще раз.Вы можете избежать второго «приглашения», просто взяв значение quit и проанализировав номер комнаты.Обратите внимание, что все будет работать нормально, потому что если пользователь входит в quit, то вы все равно выйдете из цикла:

while (true) 
{
    Console.WriteLine("Enter the the room number you are in.");
    string quit = Console.ReadLine();

    // another quick thing to fix is to ignore the case (don't trust the user)
    if(quit .Equals("quit", StringComparison.InvariantCultureIgnoreCase))
    {
        //Break statement allows quit to jump out of loop
        break;
    }

    roomNumber = int.Parse(quit); // you've already asked the user for input, so just reuse the variable holding the input

    // TODO: consider what happens if you can't parse an integer, i.e. use TryParse etc

    // do whatever you need to do after that
}

После того, как вы получите номер комнаты, не забудьте добавить количество бутылок соператор «+ =», например:

room4 += int.Parse(Console.ReadLine());
0 голосов
/ 16 января 2012

Вам необходимо добавить значение, полученное от Console.ReadLine (), к существующему количеству бутылок для комнаты, например:

room1 = room1 + int.Parse(Console.ReadLine());

в качестве альтернативы вы можете использовать сокращенную версию:

room1 += int.Parse(Console.ReadLine());

Проблема, с которой вы столкнулись в настоящее время, заключается в том, что при вводе 5 бутылок для первой комнаты room1 получает 5 сохраненных в переменной. В следующий раз, когда вы введете 10 бутылок для первой комнаты, room1 получит 10 сохраненных в переменной. Вам нужно сложить эти два числа вместе, чтобы сохранить общее количество бутылок для комнаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...