Läskbacken slutprojekt programmering 1 C#

Permalänk

@perost

Min privata debugger hahaha! Snart får jag swisha dig. Kan du kolla över denna koden och förklara varför svaren jag matar in inte sparas in i min vektor?
Det sparas när jag tar bort if-satsen, men då försvinner första flaskan.

public void Add_soda() // Här kommer man om man valt case nr 1, vilket är att man får skriva in sina drycker. { if (antal_flaskor < 24) { 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 soda_input = 0; string chosenSoda = ""; 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 { soda_input = int.Parse(Console.ReadLine()); } catch (Exception e) { Console.WriteLine("Bara siffror din skojare."); continue; } if (chosenSoda == null) { flaskor[antal_flaskor] = chosenSoda; // 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 (soda_input) // Skapar en meny, som skriver ut vilken dryck användaren väljer tills backen blir full. { case 1: chosenSoda = "Coca-Cola"; Console.WriteLine("-------------------"); Console.WriteLine("Du valde Coca-Cola"); Console.WriteLine("-------------------"); break; case 2: chosenSoda = "Fanta"; Console.WriteLine("-------------------"); Console.WriteLine("Du valde Fanta"); Console.WriteLine("-------------------"); break; case 3: chosenSoda = "Pepsi"; Console.WriteLine("-------------------"); Console.WriteLine("Du valde Pepsi"); Console.WriteLine("-------------------"); break; case 4: chosenSoda = "Öl"; Console.WriteLine("-------------------"); Console.WriteLine("Du valde Öl"); Console.WriteLine("-------------------"); break; case 5: chosenSoda = "Redbull"; Console.WriteLine("-------------------"); Console.WriteLine("Du valde Redbull"); Console.WriteLine("-------------------"); break; case 6: chosenSoda = "Cider"; Console.WriteLine("-------------------"); Console.WriteLine("Du valde Cider"); Console.WriteLine("-------------------"); break; case 7: chosenSoda = "Vatten"; Console.WriteLine("-------------------"); Console.WriteLine("Du valde Vatten"); Console.WriteLine("-------------------"); 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 (antal_flaskor != 24); } else Console.WriteLine(""); Console.WriteLine("Backen är full. Vänligen välj ett av alternativen nedan om du vill vidareforska backen:"); Console.WriteLine(""); }

If satsen i tjock-text är det som krånglar för mig. Nu när jag ska se över vad som finns i backen skrivs det bara ut "Tom plats"

Jag ser inte varför det inte ska lagras i vektorn, tar jag bort den ifsatsen och bara kör utan, så lagras allting, men då försvinner det första svaret.
Någon som ser varför?

Lägger jag till en else {
flaskor[antal_flaskor] = chosenSoda;
}

Så lagras allt förutom första flaskan som jag matar in i programmet. Den blir blank, visas 23 flaskor.
Jag kan göra en tillfällig lösning med att ha 25 flaskor i backen och då visar den 24, men vill förstå vad jag gör fel, om det är en regel som jag missar eller bara slarvig kodning, eller om det faktiskt är något svårt?

Permalänk
Medlem

@mattin123: Din logik just nu är ungefär:

chosenSoda = tom sträng soda_input = läs in index från användare om chosenSoda är null: lägg till chosenSoda i vektorn öka antalet flaskor med 1, oavsett om en läsk lades till i vektorn eller ej använd soda_input för att ta reda på vilken läsk som valts

Ser du något problem med ordningen du gör saker i? En tom sträng är för övrigt aldrig null. null betyder att variabeln inte pekar på något värde, men en tom sträng är ett värde.

Du har för övrigt mycket duplicerad kod i din switch-sats. Om du använder switch-satsen för att bara ta reda på vilken läsk som valts och istället skriver ut vilket värde chosenSoda fått (om den fått ett värde) efter switch-satsen så blir koden mycket kortare.

Permalänk
Skrivet av perost:

@mattin123: Din logik just nu är ungefär:

chosenSoda = tom sträng soda_input = läs in index från användare om chosenSoda är null: lägg till chosenSoda i vektorn öka antalet flaskor med 1, oavsett om en läsk lades till i vektorn eller ej använd soda_input för att ta reda på vilken läsk som valts

Ser du något problem med ordningen du gör saker i? En tom sträng är för övrigt aldrig null. null betyder att variabeln inte pekar på något värde, men en tom sträng är ett värde.

Du har för övrigt mycket duplicerad kod i din switch-sats. Om du använder switch-satsen för att bara ta reda på vilken läsk som valts och istället skriver ut vilket värde chosenSoda fått (om den fått ett värde) efter switch-satsen så blir koden mycket kortare.

Så sjukt att vi tittar på samma kod men ser saker så annorlunda. Misstänker att du menar att jag ska lägga in if-satsen efter användaren gör sina val, inte innan. Återkommer ang svar

Permalänk
Skrivet av perost:

@mattin123: Din logik just nu är ungefär:

chosenSoda = tom sträng soda_input = läs in index från användare om chosenSoda är null: lägg till chosenSoda i vektorn öka antalet flaskor med 1, oavsett om en läsk lades till i vektorn eller ej använd soda_input för att ta reda på vilken läsk som valts

Ser du något problem med ordningen du gör saker i? En tom sträng är för övrigt aldrig null. null betyder att variabeln inte pekar på något värde, men en tom sträng är ett värde.

Du har för övrigt mycket duplicerad kod i din switch-sats. Om du använder switch-satsen för att bara ta reda på vilken läsk som valts och istället skriver ut vilket värde chosenSoda fått (om den fått ett värde) efter switch-satsen så blir koden mycket kortare.

Du är gud. Tack så oerhört mycket, det funkar!