Kolla user input i for-loop med ännu en loop

Permalänk

Kolla user input i for-loop med ännu en loop

Hejsan,
Har stött på ett litet problem som jag trodde var jätteenkelt men jag får inte till det. Ni ser nedan iom if-satsen vad jag vill göra, dvs kolla så att user inte slår in nåt annat än siffra mellan 1 och 7. Men, gör den det så ska samma fråga ställas igen, och inte gå vidare.

DVS; första varvet så printas "Skriv in siffra nummer 1: "
andra varvet "Skriv in siffra nummer 2: "...

Om user skriver in en siffra utanför intervallet 1 och 7 på fråga nummer 2 t ex så ska "Endast siffror!" visas, vilket det gör. Men efter det så vill jag att user ska få ännu en chans på fråga nummer 2. Som det är nu så fortsätter loopen till fråga nummer 3 oavsett input från user.

Fattar att jag behöver ännu en loop i loopen (ej inlagt i denna kod) och har försökt med while och do och det funkar inte, antingen får unreachable code, variable doesnt exist in context osv. Troligtvis är det här superenkelt men jag har stirrat mig blind på detta i 2 timmar och försökt fram och tillbaka. Obs att jag är rookie inom detta men tycker fasen jag borde löst den här.. kanske är det nåt annat fel som jag gjort..?

for (int i = 0; i < user.Length; i++) { int rank = i + 1; Console.Write($"Skriv in siffra nummer {rank}: "); int userNumbers = Convert.ToInt32(Console.ReadLine()); if (userNumbers < 1 || userNumbers > 7) { Console.WriteLine("Endast siffror mellan 1 och 7!"); } else { user[i] = userNumbers; rank++; } }

Permalänk
Medlem

Lösningen är egentligen väldigt enkel: minska i med 1 om inmatningen är fel, eller ta bort i++ i for-satsen och kör det när du vet att inmatningen är korrekt istället.

Permalänk
Skrivet av perost:

Lösningen är egentligen väldigt enkel: minska i med 1 om inmatningen är fel, eller ta bort i++ i for-satsen och kör det när du vet att inmatningen är korrekt istället.

Vet inte om det finns tillräckligt många facepalm-emojis för hur jag känner just nu.. Tusen tack perost