En "trasig" switch-case meny C#
Hej!!
Jag gör nu mitt slutprojekt i programmering och har som så många andra fått "Bussen" som uppgift, dock vill jag göra det lite kul och har därför valt att bygga upp en nattklubb istället.
Det finns en tydlig bild för mig hur jag vill att programmet ska se ut när det är färdigt, och jag har ett par veckor på mig men bättre att kunna bygga på det under ett längre tar tycker jag, än att stressa.
Jag undrar varför mitt program fastnar på frågan:
"Console.WriteLine("What is your gender ? \n Female = F \n Male = M \n Other/Prefer not to say : O");"
Har jag missat att lägga till en rad med kod? Är egentligen hela valid grejen svindum?
Tack på förhand.
using System;
namespace Nightclub
{
class Program
{
public static void Main(string[] args)
{
var myNightclub = new Club();
myNightclub.Run();
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
class Club
{
private int[] guests = new int[25]; //Skapar vektor med plats för 25 gäster
private int totalGuests = 0;
private int maxGuests = 25;
public void Run()
{
int menu;
do //Skapar loop som leder vidare till olika metoder
{
Console.WriteLine(" -------------------------------------------------------------------------------");
Console.WriteLine("| Welcome to our nightclub: The Jungle! You will now be asked to make a choice :|");
Console.WriteLine("| |");
Console.WriteLine("| 1. Show all guests: |");
Console.WriteLine("| 2. Add a guest: |");
Console.WriteLine("| 3. Show me the total age of our guests: |");
Console.WriteLine("| 4. Exit the nightclub-program |");
Console.WriteLine(" -------------------------------------------------------------------------------");
menu = int.Parse(Console.ReadLine());
switch (menu) //Knappval i menyn för olika metoder(cases)
{
case 1:
print_nightclub();
break;
case 2:
add_guest();
break;
case 3:
calc_total_age();
break;
case 4:
Console.WriteLine("Program shutting down, thank you for visiting our nightclub. :-)");
break;
default:
Console.WriteLine("Please only write your choice, a number between 1-4 : ");
break;
}
} while (menu != 4); //Loopar sålänge användare inte väljer case 4 vilket avslutar programmet
}
public void print_nightclub() //Metod för att skriva ut alla gäster på nattklubben
{
foreach (var totalGuests in guests)
{
Console.WriteLine("The passengers on the bus is" + guests);
}
}
public void add_guest()
{
bool validAge = false;
bool validGender = false;
bool validDrink = false;
bool validDance = false;
int ageInput = 0;
string genderInput = "";
string drinkInput = "";
string danceInput = "";
Console.WriteLine("Add a guest : ");
while (!validAge)
{
Console.Clear();
Console.WriteLine("Write in your age : ");
try
{
ageInput = int.Parse(Console.ReadLine());
validAge = true;
}
catch
{
Console.WriteLine("You have to write your age with numbers, try again : ");
ageInput = int.Parse(Console.ReadLine());
validAge = true;
}
while (!validGender)
{
Console.WriteLine("What is your gender ? \n Female = F \n Male = M \n Other/Prefer not to say : O");
switch (Console.ReadLine().ToLower())
{
case "F":
genderInput = "Female";
validGender = true;
break;
case "M":
genderInput = "Male";
validGender = true;
break;
case "O":
genderInput = "Other / Prefer not to say";
validGender = true;
break;
default:
Console.WriteLine("You have to make a choice: F, M or O?");
validGender = false;
break;
}
}
while (!validDrink)
{
Console.WriteLine("What are you gonna drink tonight? \n Beer = B \n Non-alcoholic = N \n Gin and tonic = GT \n I don't know yet = IDK");
switch (Console.ReadLine().ToLower())
{
case "B":
drinkInput = "Beer";
validDrink = true;
break;
case "N":
drinkInput = "Non-alcoholic";
validDrink = true;
break;
case "GT":
drinkInput = "Gin and tonic";
validDrink = true;
break;
case "IDK":
drinkInput = "I don't know yet";
validDrink = true;
break;
default:
Console.WriteLine("You have to make a choice: B, N, GT or IDK?");
validDrink = false;
break;
}
}
while (!validDance)
{
Console.WriteLine("Are you gonna dance tonight? \n Yes = Y \n No = N \n I don't know = IDK");
switch (Console.ReadLine().ToLower())
{
case "Y":
danceInput = "Yes";
validDance = true;
break;
case "N":
danceInput = "No";
validDance = true;
break;
case "IDK":
danceInput = "I don't know";
validDance = true;
break;
default:
Console.WriteLine("You have to make a choice: Y, N or IDK?");
validDance = false;
break;
}
}
}
}
public void calc_total_age() //Metod för att räkna ut den totala åldern av alla gäster på nattklubben.
{
int sum = 0;
for (int i = 0; i < totalGuests; i++)
{
sum += guests[i];
}
Console.WriteLine($"\nThe total age for all of our guests is : {sum}");
}
}
}