I am having a issue with my current code. I am doing a project like a lot of other people, the famous SodaCrate project. I do NOT, want any solutions to the code, but I DO want to know why I can't solve the issue with "System.IndexOutOfRangeException". I get this error when I try to add more than 24 bottles into my crate (I apologize for the swedish comments).
Here is my code:
public void add_soda()
{
Console.WriteLine("\"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"");
Console.WriteLine("| Choose your beverage! |");
Console.WriteLine("| |"); // Välkomnar användaren
Console.WriteLine("|[1] Pepsi , Soda, 11kr |");
Console.WriteLine("|[2] Coca-Cola , Soda, 12kr |");
Console.WriteLine("|[3] Coors Light , Beer, 18kr |");
Console.WriteLine("|[4] Fiji, Water , 13kr |");
Console.WriteLine("|[5] Nocco , Energy drink , 22kr |");
Console.WriteLine("|[6] Redbull , Energy drink , 25kr |");
Console.WriteLine("| |");
Console.WriteLine("\"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"");
//Console.WriteLine("[7] Randomize"); <---------- Fixa
int temp = 0;
while (!int.TryParse(Console.ReadLine(), out temp) || !(temp < 7 && temp > 0)) // Detta är en failsafe, ifall väljaren väljer något som är över 7 eller under 1 kommer följande kod att skrivas ut.
{
// Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Invalid input, please try again.");
// Console.ResetColor();
}
switch (temp) // Denna switch statementen kommer låta oss lägga till flaskor i vår crate
{
case 1: //Om anändaren skriver in ett tal mellan 1 och 6, kommer följade cases att skriva ut deras WriteLines.
Console.WriteLine(">>> You choose Pepsi <<<");
myCrate[numberOfBottles] = new Bottle("Pepsi", "Soda", 11); // Här skapas en läsk med namnet Pepsi som kostar 11kr.
numberOfBottles++; // Denna funktion gör så att en läsk läggs in i craten varje gång den skapas.
break;
case 2:
Console.WriteLine(">>> You choose Coca-Cola <<<");
myCrate[numberOfBottles] = new Bottle("Coca-Cola", "Soda", 12);
numberOfBottles++;
break;
case 3:
Console.WriteLine(">>> You choose Coors Light <<<");
myCrate[numberOfBottles] = new Bottle("Coors Light", "Beer", 18);
numberOfBottles++;
break;
case 4:
Console.WriteLine(">>> You choose Fiji <<<");
myCrate[numberOfBottles] = new Bottle("Fiji", "Water", 13);
numberOfBottles++;
break;
case 5:
Console.WriteLine(">>> You choose Nocco <<<");
myCrate[numberOfBottles] = new Bottle("Nocco", "Energydrink", 22);
numberOfBottles++;
break;
case 6:
Console.WriteLine(">>> You choose Redbull <<<");
myCrate[numberOfBottles] = new Bottle("Redbull", "Energydrink", 25);
numberOfBottles++;
break;
default:
//Console.ForegroundColor = ConsoleColor.Red; // <<<<<----------------- FIXA
Console.WriteLine("Invalid choice!");
// Console.ResetColor;
break;
}
try
{
if(numberOfBottles >= 25)
{
Console.WriteLine("The crate is currently full!");
}
}
catch (IndexOutOfRangeException e)
{
Console.WriteLine(e.Message);
throw new ArgumentOutOfRangeException("index paramater is out of range", e);
}
}
Could anyone give me an idea or a hint of why the Exception is being thrown? I've tried a if-else statement as well I am currently quite confused.