Läskbacken Programmering 1
Hejsan,
Sitter just nu och arbetar med sista uppgiften i programmering 1. Läskbacken heter uppgiften och man ska skapa ett program där man ska kunna lägga till diverse drycker i en läskback. Man ska kunna använda en rad olika funktioner men jag har fastnat på ett ställe.
Får inte riktigt till det hur jag får användarens val att registreras. När användaren väljer alternativ 1 t.ex. för att lägga till Ramlösa så kraschar programmet. Jag vet inte riktigt hur jag ska göra när jag använder en lista. Har lagt till överst för att det ska synas tydligt, men även nedan ett större kodblock. varför blir inte myList[1 tex.] Ramlösa?
for (int i =0;i < bottles.Length; i++)
{
if (bottles[i] == null)
{
addSoda--; //eftersom val 1 är läsk 1, men i vektor 0
bottles[i] = myList[addSoda]; //HÄR KRASCHAR DET
break;
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace sodacrate
{
class Soda
{
private string name;
private string type;
private double price;
public Soda(string name, string type, double price)
{
this.name = name;
this.type = type;
this.price = price;
}
public string Name
{
get { return name; }
set { name = value; }
}
public string Type
{
get { return type; }
set { type = value; }
}
public double Price
{
get { return price; }
set { price = value; }
}
}
class Sodacrate
{
private Soda[] bottles = new Soda[24]; //Vektor
List<Soda> myList = new List<Soda>(); //lista
public void sodasList()
{
myList.Add(new Soda("Ramlösa", "Mineralvatten", 5.90));
myList.Add(new Soda("Coca-Cola", "Läsk", 6.90));
myList.Add(new Soda("Coca-Cola Zero", "Läsk", 6.90));
myList.Add(new Soda("Sprite", "Läsk", 6.90));
myList.Add(new Soda("Fanta", "Läsk", 6.90));
myList.Add(new Soda("Dr. Pepper", "Läsk", 6.90));
myList.Add(new Soda("Mountain Dew", "Läsk", 6.90));
myList.Add(new Soda("Red Bull", "Energidryck", 7.90));
}
public void Run()
{
int menu;
Console.Clear();
do
{
Console.WriteLine("Välj ett alternativ genom att endast skriva in siffran till passande meny och klicka enter.");
Console.WriteLine(" 1: Lägga till läsk");
Console.WriteLine(" 2: Ta bort läsk");
Console.WriteLine(" 3: Skriv ut läskbacken");
Console.WriteLine(" 4: Belopp på läskbacken");
Console.WriteLine(" 5: Sök efter läsk");
Console.WriteLine(" 6: Sortera läskbacken");
Console.WriteLine(" 0: Avsluta programmet");
while (true)
{
try
{
menu = int.Parse(Console.ReadLine());
break;
}
catch
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\nDu kan bara skriva siffor. Försök på nytt.");
Console.ResetColor();
}
}
Console.Clear();
switch (menu){
case 1:
add_soda();
break;
case 2:
remove_soda();
break;
case 3:
print_crate();
break;
case 4:
calc_total();
break;
case 5:
find_soda();
break;
case 6:
sort_sodas();
break;
case 0:
return;
default:
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Du valde inget utav ovanstående alternativ. Var vänligen och försök igen.\n");
Console.ResetColor();
break;
}
} while (menu != 0);
}
public void add_soda()
{
int addSoda; //användarens val. T.ex. 1 ---> Lägg till Ramlösa
for (int bottleInput = 0; bottleInput < bottles.Length; bottleInput++)
{
Console.WriteLine("Var vänligen och lägg till önskad dryck:");
Console.WriteLine("1. Lägg till Ramlösa");
Console.WriteLine("2. Lägg till Coca-Cola");
Console.WriteLine("3. Lägg till Coca-Cola Zero");
Console.WriteLine("4. Lägg till Sprite");
Console.WriteLine("5. Lägg till Fanta");
Console.WriteLine("6. Lägg till Dr. Pepper");
Console.WriteLine("7. Lägg till Mountain Dew");
Console.WriteLine("8. Lägg till Red Bull");
Console.WriteLine("0. Gå tillbaka till huvudmenyn");
while (true)
{
try
{
addSoda = int.Parse(Console.ReadLine());
break;
}
catch
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("\nDu kan bara skriva siffor. Försök på nytt.");
Console.ResetColor();
}
}
for (int i =0;i < bottles.Length; i++)
{
if (bottles[i] == null)
{
addSoda--; //eftersom val 1 är läsk 1, men i vektor 0
bottles[i] = myList[addSoda]; //HÄR KRASCHAR DET
break;
}
else if (i == bottles.Length)
{
Console.WriteLine("Backen är redan full. Klicka på enter för att återgå till huvudmenyn");
Console.ReadLine();
Run();
}
}
}
}
class Program
{
public static void Main(string[] args)
{
//Skapar ett objekt av klassen Sodacrate som heter sodacrate
Console.WriteLine("Välkommen till läsksimulatorn! Klicka på enter för att komma till huvudmenyn.");
Console.ReadLine();
var sodacrate = new Sodacrate();
sodacrate.Run();
Console.WriteLine("Tryck på valfri tanget för att avsluta . . . ");
Console.ReadKey(true);
}
}
}
AMD Ryzen 3600 - MSI B450 Tomahawk - Corsair 16GB (2x8GB) DDR4 3200Mhz CL16 - Palit GeForce RTX 2070 Dual 8GB - Samsung 860 Evo 1TB - Noctua NH-D15 - MPG A750GF - Fractal Design Define R5