简体   繁体   English

如何重载此代码以使其接受我的输入?

[英]How do I overload this code to make it accept my entry?

I am developing a program that collects the results of a "bottle drive". 我正在开发一个程序来收集“瓶驱动器”的结果。 The program will prompt the user for a room number, between 1 and 4, and then prompt the user for the number of bottles collected by each room. 该程序将提示用户输入1到4之间的房间号,然后提示用户输入每个房间收集的瓶子数。 The user should have the option to type "quit" to display each room and the number of bottles collected. 用户应该可以选择键入“退出”以显示每个房间和收集的瓶子数量。

Here is my code right now, I am having difficulty expanding the program to support multiple rooms. 这是我现在的代码,我很难扩展程序以支持多个房间。

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);
            }
        }

You could utilize an array (the room number would be used to calculate the index) to keep track of the number of bottles collected: 您可以利用一个数组(房间号将用于计算索引)来跟踪收集的瓶子数量:

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]);

Then you could iterate through the array again once the user types "quit" to show how many bottles were collected. 然后,一旦用户键入“退出”以显示收集了多少瓶,您就可以再次遍历数组。

I doubt your code compiles simply because of this: 我怀疑您的代码仅是因为以下原因而编译:

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

Use an integer variable to store the parsed room number. 使用整数变量存储已解析的房间号。

Because you only need to know one variable per room you can use a array of integers, in this case an array with 4 entries. 因为您只需要知道每个房间一个变量,所以可以使用整数数组,在这种情况下,该数组包含4个条目。 You will get input from user and convert to int. 您将从用户那里获取输入并将其转换为int。 You can then use the number to access the correct array index. 然后,您可以使用该数字访问正确的数组索引。

  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());

You would have to declare an array to store the number of bottles: 您将必须声明一个数组来存储瓶数:

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();
}

Note also that arrays are indexd from 0 to number of items minus one. 还要注意,数组的索引从0到项数减一。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM