for (int i = 0; i < bingoRad.Length; i++)
{
try
{
Console.WriteLine("Skriv in ditt {0} nummer:", positions[i]);
int bingonr = int.Parse(Console.ReadLine());
if (bingonr <= 0 || bingonr > 25) {
Console.WriteLine("Talet måste vara större än 0 och mindre eller lika med 25");
i--;
continue;
}
bingoRad[i] = bingonr;
}
catch
{
Console.WriteLine("Använd siffror!");
i--;
}
}
På ett ungefär så här hade jag lagt in en koll på om talet är inom rätt område. Du kan självklart byta ut 0 och 25 mot fördefinerade variabler för att öka modulariteten. Här använder jag också i-- för att loopen ska fråga om samma tal igen och här måste vi använda continue så den inte kör raden under 'bingoRad[i] = bingonr;' utan istället hoppar till nästa iteration. Detta borde fungera (inte testat) men jag hade personligen bytt ut det mot en while loop eftersom du har som krav att gå igenom varje tal på ett korrekt sätt innan du går vidare och på så sätt skulle du kunna föra samman ett par rader. Det hade inte krävts så mycket ändringar utan borde räcka med något i stil med
int bingoRadsNr = 0;
while (bingoRadsNr < bingoRad.Length)
{
try
{
Console.WriteLine("Skriv in ditt {0} nummer:", positions[i]);
int bingonr = int.Parse(Console.ReadLine());
if (bingonr <= 0 || bingonr > 25) {
Console.WriteLine("Talet måste vara större än 0 och mindre eller lika med 25");
continue;
}
bingoRad[bingoRadsNr] = bingonr;
bingoRadsNr++;
}
catch
{
Console.WriteLine("Använd siffror!");
}
}
Poängen här är att istället för att backa tillbaka varje gång det blir fel gör vi istället så att vi går endast framåt de gånger det blivit rätt. Variabeln bingoRadsNr ersätter alltså i och incrementas endast när vi vet att siffran har förts in i vår array som tänkt.
Edit: Återigen, se det som pseudokod då jag inte testat den. Och som sidnot: Jag hade sedan flyttat ut det mesta ur try-catch delen då det inte är bra att ha kod i den som inte behöver 'prövas' men för att visa syftet med koden behåller jag det inom try delen.
while loop ska inte användas.. bara for och foreach
vet heller inte om man ska behöver rädda upp om man skriver utanför 1-25 då man frågar efter det, kanske räcker med input fel. MEn ja saom sagt vill ställa samma fråga igen då om det sker.