Nu ändrade jag koden lite till:
for( var i = 0; i < drycker.Length; i++)
{
if (drycker[i].namn == null)
{
Console.WriteLine(" ");
Console.WriteLine("Det finns ingen" + key + "i backen");
Console.WriteLine(" ");
}
else if (drycker[i].namn == key)
{
Console.WriteLine(" ");
Console.WriteLine("Drycken finns i fack " + i + " " + "i backen.");
Console.WriteLine("");
break;
}
}
Nu kraschar programmet inte, utan den återgår till huvudmenyn efter att ha visat en drycks plats i backen.
Problemet är dock att den endast visar den första platsen som t.ex. Loka har i backen fastän den finns på flera platser i backen..
Som sagt, antal_flaskor är det du ska kolla, typ såhär.
public void find_soda()
{
Console.WriteLine("");
Console.WriteLine("Skriv namnet på en dricka för att kolla ifall det finns i backen:");
Console.WriteLine("");
string key;
int searchHits = 0;
while (true)
{
try
{
key = Console.ReadLine();
break;
}
catch (FormatException)
{
Console.WriteLine("Du får skriva in ett giltigt dryckesnamn istället1");
}
catch (NullReferenceException)
{
Console.WriteLine("");
}
}
for (var i = 0; i < antal_flaskor; i++)
{
if (drycker[i].namn == key)
{
searchHits++;
Console.WriteLine(" ");
Console.WriteLine("Drycken finns i fack " + i + " " + "i backen.");
Console.WriteLine("");
//Position i har en dryck med strängen key
}
}
if(searchHits == 0)
{
Console.WriteLine("Ingan dryck med det namnet kunde hittas. Tryck på valfri tangent för att återgå till menyn.");
}
else
{
Console.WriteLine(searchHits + " drycker hittades. Tryck på valfri tangent för att återgå till menyn.");
}
Console.ReadKey();
}