Håller på med samma uppgift om TS och är snart klar (tror jag) hehe. Har fastnat på en grej, sen finns det saker som jag självklart vill förbättra men det kan jag ändra på sen, först vill jag ha ett fungerande program.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace mySodaback
{
class Program
{
public static void Main(string[] args)
{
//Skapar ett objekt av klassen Sodacrate som heter sodacrate
var sodacrate = new Sodacrate();
sodacrate.Run();
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
class Sodacrate
{
private string[] flaskor = new string[24]; //* Skapar en vektor med 24 platser.
private int antal_flaskor = 0; //* Ger värdet på antal flaskor 0, för tillfället.
public void Run()
{
Console.WriteLine("Hej min vän! Välkommen till läsk-simulatorn!"); // Välkomnar gästen in i programmet.
Console.WriteLine("Välj ett av alternativ nedan!");
int meny = 0; // Skapar en meny, samt ger värdet meny 0.
do // Skapar en do loop som går runt med 4(5) olika alternativ som tar mig vidare isåfall till 4 olika "case"
{
Console.WriteLine("1: Lägg till en dryck"); // Skriver ut text
Console.WriteLine("2: Visa vad innehållet i läskbacken är"); // Skriver ut text
Console.WriteLine("3: All kostnad för läskbacken"); // Skriver ut text
Console.WriteLine("0: Avsluta"); // Skriver ut text
try // Gör en try/catch fall ifall användaren skriver bokstäver och inte siffror
{
meny = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("Du kan bara skriva siffor. Starta programmet igen");
}
switch (meny) // Här är olika case som användaren väljer.
{
case 1: // Väljer användaren 1, så tar den mig vidare till "add_soda();" vilket kommer längre ner
Add_soda();
break;
case 2: // Väljer användaren 1, så tar den mig vidare till "Print_crate();" vilket kommer längre ner
Print_crate();
break;
case 3: // Väljer användaren 1, så tar den mig vidare till "calc_total;" vilket kommer längre ner
Calc_total();
break;
default: // Väljer användaren en siffra som inte är mellan 0-3 så skrivs detta ut
Console.WriteLine("");
Console.WriteLine("Du kan inte ta en siffra som inte finns bland alternativen.");
Console.WriteLine("Försök igen, titta på alternativen och välj mellan 0-3");
Console.WriteLine("");
break;
}
} while (meny != 0); // så länge meny inte är lika med 0 så görs inte detta
}
public void Add_soda() // Här kommer man om man valt case nr 1, vilket är att man får skriva in sina drycker.
{
Console.WriteLine("");
Console.WriteLine("Du får nu skriva in vilka drycker du vill ha i backen tills den är full:"); // Skriver ut text och ber användaren skriva drycken.
int addsodameny = 0;
do
{
Console.WriteLine("1: Coca-Cola"); // skriver ut alternativen för flaska
Console.WriteLine("2: Fanta");
Console.WriteLine("3: Pepsi");
Console.WriteLine("4: Öl");
Console.WriteLine("5: Redbull");
Console.WriteLine("6: Cider");
Console.WriteLine("7: Vatten");
try
{
addsodameny = int.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine("Inget av alternativ var andra tecken än siffror, försök igen.");
}
string addsodameny1 = null;
flaskor[antal_flaskor] = addsodameny1; // lagrar svaren i min vektor
antal_flaskor++; // för varje svar jag skriver så ökar det med 1 i vektorn hela vägen till 24
switch (addsodameny) // Skapar en meny, som skriver ut vilken dryck användaren väljer tills backen blir full.
{
case 1:
Console.WriteLine("-------------------");
Console.WriteLine("Du valde Coca-Cola");
Console.WriteLine("-------------------");
break;
case 2:
Console.WriteLine("-------------------");
Console.WriteLine("Du valde Fanta");
Console.WriteLine("-------------------");
break;
case 3:
Console.WriteLine("-------------------");
Console.WriteLine("Du valde Pepsi");
Console.WriteLine("-------------------");
break;
case 4:
Console.WriteLine("-------------------");
Console.WriteLine("Du valde Öl");
Console.WriteLine("-------------------");
break;
case 5:
Console.WriteLine("-------------------");
Console.WriteLine("Du valde Redbull");
Console.WriteLine("-------------------");
break;
case 6:
Console.WriteLine("-------------------");
Console.WriteLine("Du valde Cider");
Console.WriteLine("-------------------");
break;
case 7:
Console.WriteLine("-------------------");
Console.WriteLine("Du valde Vatten");
Console.WriteLine("-------------------");
break;
case 0:
Console.WriteLine("Lyssnar du inte på mig? Hejdå! Svara rätt nästa gång");
break;
default: // om man skriver siffror ovanför 1-7 så skrivs detta ut.
Console.WriteLine("-------------------");
Console.WriteLine("Siffor mellan 1-7 min vän");
Console.WriteLine("-------------------");
break;
}
} while (addsodameny != 24);
if (antal_flaskor == 24) // När backen är full ska detta meddelandet spelas och då ska man komma tillbaka till den vanliga menyn
{
Console.WriteLine("");
Console.WriteLine("Backen är nu full, vänligen välj ett av alternativen nedan om du vill vidareforska backen:");
Console.WriteLine("");
}
}
public void Print_crate() // denna kod är hämtat från exemplet och skriver ut vad jag har i min vektor
{
Console.WriteLine(""); // Skriver ut text som gör programmet enklare att följa samt roligare.
Console.WriteLine("Här har du innehållet i backen.");
Console.WriteLine("");
foreach (var dryck in flaskor) // Här är koden som skriver ut allt i min vektor.
{
if (dryck != null)
Console.WriteLine(dryck);
else
Console.WriteLine("Tom plats");
}
Console.WriteLine("");
Console.WriteLine("Vill du se värdet i backen, lägga till någon dryck eller till och med avsluta, välj ett av alternativen nedan:"); // tillbaka till menyn
Console.WriteLine("");
}
public void Calc_total() // Här är koden som ska räkna ut värdet, jag utgår från att varje flaska kostar 5kr. därför blir det backen * 5.
{
Console.WriteLine("");
Console.WriteLine("Totala kostnaden är nu " + antal_flaskor * 5 + "kr");
Console.WriteLine("Vill du se vad backen innehåller, lägga till läsk eller avsluta programmet. Välj då ett av alternativen nedan:");
Console.WriteLine("");
}
}
}
Felet för mig är att när användaren ska välja sina drycker som han ska lägga in i backen så fungerar loopen och menyn som det ska ända fram tills slutet, då if-satsen som ska säga till när backen är == 24 ska skriva ut "backen är full" men programmet stängs av istället. Har testat massa olika grejer utan att förstå vad felet är..
EDIT: Jag ändrade min while loop till (antal_flaskor != 24). Då fungerade att if satsen skrevs ut efter 24 inmatningar, men när jag sedan ska kolla innehållet så står det tom_plats. Vet ej om det är fel på foreach koden eller om det inte lagras i min vektor..?