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

Я занимаюсь разработкой программы, которая собирает результаты «бутылочного привода». Программа запросит у пользователя номер комнаты от 1 до 4, а затем запросит у пользователя количество бутылок, собранных в каждой комнате. Пользователь должен иметь возможность набирать «выход», чтобы отобразить каждую комнату и количество собранных бутылок.

Вот мой код прямо сейчас, я испытываю трудности с расширением программы для поддержки нескольких комнат.

namespace BottleDrive
{
  class Program
  {
    static void Main(string[] args)
    {
        int roomNumber;
        int numberOfBottles;
        char quit;

        Console.WriteLine("Enter the Room number you are in.");
        string roomSelect = "";
        roomSelect = Console.ReadLine();
        roomSelect = int.Parse(roomSelect);
        if (roomSelect >= 1)
        {
            Console.WriteLine("Enter the number of bottles collected by room one");
            string room1Bottles = "0";
            room1Bottles = Console.ReadLine();
            int room1 = int.Parse(room1Bottles);
            if (room1 == 1)
            {
                room1Bottles += room1;
                Console.WriteLine("Room one has " + room1 + " many bottles collected");
            }
        }
        if (Console.ReadLine() = quit)
        {
            Console.WriteLine("Room one has collected:" + room1Bottles + "\nRoom two has collected:" + room2Bottles + "Press space to quit");
            string systemExit = "";
            if (Console.ReadLine = "")
            {
                systemExit(0);
            }
        }

Ответы [ 4 ]

3 голосов
/ 12 января 2012

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

int[] bottles = new int[4];

while (true)
{
    Console.Write("Enter the room you're in: ");
    string inputString = Console.ReadLine();
    if (inputString == "quit")
        break;
    int room = int.Parse(inputString);

    Console.Write("Bottles collected in room {0}: ", room);
    bottles[room - 1] = int.Parse(Console.ReadLine());
}

for (int i = 0; i < bottles.Length; ++i)
    Console.WriteLine("Bottles collected in room {0} = {1}", i + 1, bottles[i]);

Затем вы можете повторить итерацию массива, как только пользовательвведите «quit», чтобы показать, сколько бутылок было собрано.

0 голосов
/ 12 января 2012

Вы должны будете объявить массив для хранения количества бутылок:

static void Main(string[] args)
{
    const int NumberOfRooms = 4;

    int[] numberOfBottles = new int[NumberOfRooms];

    while (true) {
        Console.WriteLine("Enter the Room number you are in or 'q' and <enter> to quit.");
        string line = Console.ReadLine();
        if (line.ToLower().StartsWith("q")) {
            break;
        }
        int roomNumber = int.Parse(line) - 1;
        if (roomNumber >= 0 && roomNumber < NumberOfRooms) {
            Console.WriteLine("Enter the number of bottles collected by room number " + (roomNumber + 1));
            line = Console.ReadLine();
            int bottles = int.Parse(line);
            numberOfBottles[roomNumber] += bottles;
            Console.WriteLine("{0} bottles collected for room number {1}", numberOfBottles[roomNumber], roomNumber + 1);
            Console.WriteLine();
        }
    }
    Console.WriteLine();
    for (int i = 0; i < NumberOfRooms; i++) {
        Console.WriteLine("{0} bottles collected for room number {1}", numberOfBottles[i], i + 1);
    }
    Console.WriteLine("Press any key to quit.");
    Console.ReadKey();
}

Обратите внимание, что массивы индексируются от 0 до количества элементов минус один.

0 голосов
/ 12 января 2012

Поскольку вам нужно знать только одну переменную на комнату, вы можете использовать массив целых чисел, в данном случае массив с 4 записями.Вы получите ввод от пользователя и конвертировать в int.Затем вы можете использовать номер для доступа к правильному индексу массива.

  int[] arr_rooms = new int[4];
 Console.WriteLine("Enter room number");
 int number = Int.Parse(Console.ReadLine());
 Console.WriteLine("enter number of bottles");
 int bottles = Int.Parse(Console.ReadLine());

 arr_rooms[number - 1] = bottles; //the -1 is because arrays start at 0

 Console.WriteLine("bottles in room 1 is " + arr_rooms[0].toString());
0 голосов
/ 12 января 2012

Я сомневаюсь, что ваш код компилируется просто из-за этого:

string roomSelect = "";
roomSelect = Console.ReadLine();
roomSelect = int.Parse(roomSelect);

Используйте целочисленную переменную для хранения проанализированного номера комнаты.

...