Hjälp med kod. Felsökning och kvalitetssäkring
Hej!
Jag läser just nu en onlinekurs i programmering 1 och är på min allra sista uppgift som ska lämnas in imorgon innan jag ska göra min slutliga muntliga examination. Den handlar bland annat om felsökning och kvalitetssäkring. Jag har redan debuggat koden och inte hittat något fel. Däremot så har jag hittat ett fel på egen hand när jag provade koden.
Meningen är att man ska kunna lägga ner 24 flaskor i backen, men jag kan inte för mitt liv se vart jag har gjort fel. Då jag ska lägga in den 24:e flaskan så får jag upp ett meddelande där det står att det inte får plats med mer flaskor i backen.. Däremot om jag lägger in 23 flaskor så står det att jag har 1 plats kvar.
Såhär ser min kod ut:
namespace läskback
{
class Sodacrate
{
// Spara våra valda flaskor
private string[] flaskor = new string[24];
// Antalet flaskor
private int antal_flaskor = 0;
// Summa av kostand för alla flaskor, räknas ut med calc_total funktionen
public int sum = 0;
public void Run()
{
// Vårt första meny val
int meny = 0;
// Köra meny tills val 4 = avsluta väljs
do
{
Console.WriteLine("");
Console.WriteLine("Välj ett alternativ");
Console.WriteLine("1. Lägg till en dryck");
Console.WriteLine("2. Visa innehåll");
Console.WriteLine("3. Beräkna värde");
Console.WriteLine("4. Avsluta program");
// Läs vår sträng till en integer
meny = int.Parse(Console.ReadLine());
switch (meny)
{
// Om vi ska lägga till en dryck
case 1:
add_soda();
break;
// Om vi ska skriva ut innehåll
case 2:
print_crate();
break;
// Om vi ska räkna ut värdet
case 3:
sum = calc_total();
Console.WriteLine("Totalt värde: {0} kr", sum);
break;
// Om avsluta program väljs
case 4:
Console.WriteLine("Programmet avslutas!");
break;
// Om inget av valen matchar
default:
Console.WriteLine("Felaktig inmatning");
break;
}
} while (meny != 4); // Börja om menyn om valet inte är 4
}
// För att lägga till en dryck
public void add_soda()
{
// Vi kan inte lägga till om den är full
if (antal_flaskor == 24)
{
Console.WriteLine("Backen är full, du kan inte lägga till flera flaskor!");
return;
}
Console.WriteLine("Vilken dryck vill du lägga till i backen?: ");
Console.WriteLine("1. Coca Cola 5 kr");
Console.WriteLine("2. Fanta 5 kr");
Console.WriteLine("3. Julmust 5 kr");
Console.WriteLine("4. Lättöl 5 kr");
Console.WriteLine("5. Ramlösa 5 kr");
// Läs in val av dryck och gör strängen till en integer
int val = int.Parse(Console.ReadLine());
// Namnet på den flaska som väljs
string flaska = "";
// Om menyn ska visas eller inte
bool visa_meny = true;
do
{
switch (val)
{
// Om vi ska lägga till en coca cola
case 1:
flaska = "Coca Cola";
Console.WriteLine("Du valde att lägga till Coca Cola");
visa_meny = false;
break;
// Om vi ska lägga till en fanta
case 2:
flaska = "Fanta";
Console.WriteLine("Du valde att lägga till Fanta");
visa_meny = false;
break;
// Om vi ska lägga till en julmust
case 3:
flaska = "Julmust";
Console.WriteLine("Du valde att lägga till Julmust");
visa_meny = false;
break;
// Om vi ska lägga till en lättöl
case 4:
flaska = "Lättöl";
Console.WriteLine("Du valde att lägga till Lättöl");
visa_meny = false;
break;
// Om vi ska lägga till en ramlösa
case 5:
flaska = "Ramlösa";
Console.WriteLine("Du valde att lägga till Ramlösa");
visa_meny = false;
break;
// Om en ogiltig dryck väljs så vill vi visa menyn igen
default:
flaska = "";
Console.WriteLine("Felaktig inmatning, mata in ett tal mellan 1-5");
visa_meny = true;
break;
}
} while (visa_meny); // Visa menyn sålänge visa_meny är sant
Console.Write("Hur många {0} vill du lägga till: ", flaska);
// Läs in hur många av drycken som ska läggas till, gör om sträng till integer.
int antal = int.Parse(Console.ReadLine());
// Kolla så vi har plats för drycken i vår back
if (antal_flaskor + antal < 24)
{
for (int i = 0; i < antal; i++)
{
flaskor[antal_flaskor] = flaska;
antal_flaskor++;
}
// Räkna ut antalet platser kvar så vi kan visa det
int kvar = flaskor.Length - antal_flaskor;
Console.WriteLine("Du valde att lägga till {0} styck {1}", antal, flaska);
Console.WriteLine("{0} platser kvar i läskbacken", kvar);
}
else
{
Console.WriteLine("Det finns inte plats för att lägga till {0} styck {1}, det finns bara {2} platser kvar. Försök igen ", antal, flaska, flaskor.Length - antal_flaskor);
}
}
public void print_crate()
{
// Gå igenom alla flaskor, om platsen är fylld skriv ut drycken
// annars skriv bara ut tom plats.
foreach (var dryck in flaskor)
{
if (dryck != null)
Console.WriteLine(dryck);
else
Console.WriteLine("Tom plats");
}
}
// Räkna ut totala värdet på backen
private int calc_total()
{
int total = 0;
foreach (var dryck in flaskor)
{
// Kolla så att platsen inte är tom
if (dryck != null)
total += 5; // Varje dryck kostar 5 kr så vi behöver inte kolla vad det är för dryck
}
return total; // Returnera totalen
}
}
class Program
{
public static void Main(string[] args)
{
// Kör vårt program
Console.WriteLine("Välkommen till läskbacken!");
// Skapa ett Sodacrate objekt
var sodacrate = new Sodacrate();
sodacrate.Run(); // Kör vår run funktion för att börja
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
Tack på förhand för all hjälp!