#c# #function #loops #menu
Вопрос:
Я очень новичок в C#, на самом деле, я никогда не кодировал раньше 4 месяцев назад. Тем не менее, я должен составить меню, но, похоже, я не смогу заставить его выскочить из цикла, когда он будет выполнен, сделав один выбор. Например, если пользователь отвечает на все вопросы, задаваемые при первом выборе, я хочу, чтобы он вышел из первого выбора и показал пользователю все остальные варианты. Лучший пример приведен ниже (это на C#).:
Console.WriteLine("Enter a number between 1 and 6"); Console.WriteLine("1: Areas of Rectangles"); Console.WriteLine("2: Biggest Number"); Console.WriteLine("3: Valid Points"); Console.WriteLine("4: Dollar Game"); Console.WriteLine("5: Oldest Person"); Console.WriteLine("6: Hi Lo Game"); Console.WriteLine("7: Quit Menu"); int choice = int.Parse(Console.ReadLine()); do { switch (choice) { case 1: Areas_Of_Rectangles(); break; case 2: Biggest_Number(); break; case 3: Valid_Points(); break; case 4: Dollar_Game(); break; case 5: Oldest_Person(); break; case 6: Hi_Lo_Game(); break; if (!int.TryParse(Console.ReadLine(), out choice)) { break; } Console.WriteLine(""" choice """ "is not a number"); } } while (choice != 7); static void Areas_Of_Rectangles() { //======================================================================================= //Ask the user for the lenght and width of two rectangles //======================================================================================= Console.WriteLine("Enter the lenght of the first rectangle"); int lenght1 = int.Parse(Console.ReadLine()); Console.WriteLine("Enter the width of the first rectangle"); int width1 = int.Parse(Console.ReadLine()); int rec1 = lenght1 * width1; Console.WriteLine("Enter the length of the second rectangle"); int lenght2 = int.Parse(Console.ReadLine()); Console.WriteLine("Enter the width of the second rectangle"); int width2 = int.Parse(Console.ReadLine()); int rec2 = lenght2 * width2; //========================================================================================== //Formulas to tell the user which rectangle has a greater area of if it has the same area //========================================================================================== if (rec1 gt; rec2) { Console.Write("Your first rectangle is bigger and has an area of " rec1); } if (rec2 gt; rec1) { Console.Write("Your second rectangle is bigger and has an area of " rec2); } if (rec1 == rec2) { Console.Write("Both your rectangles have an area of " rec1); }
Комментарии:
1. Это потому, что выбор сделан до цикла. Вам нужно немного изменить порядок вашего кода. Но вы также должны добавить код, который уменьшит меню до еще не выбранных параметров и т.д.
2. @ChiefTwoPencils Я попробую, спасибо, но как бы я сократил свое меню до еще не выбранных параметров?
3. Вы хотели бы поместить их в какую-то коллекцию (массив, список и т. Д.) И удалить их по мере их выбора. Имейте в виду, что ваш переключатель зависит от номера опции.