| 

.NET C# Java Javascript Exception

4
Hallo,
ich weiss einfach nicht wo mein Fehler liegt :(
Ich möchte aus einer Liste von 7 Fragen, 4 unterschiedliche Fragen zufällig auswählen (Sie sollen sich nicht wiederholen) und ausgeben lassen.


class Program
{
static void Main(string[] args)
{

List<string> fragen = new List<string>();
fragen.Add("Wie ist die Hauptstadt von Deutschland?");
fragen.Add("Wie ist die Hauptstadt von Italien");
fragen.Add("Wie ist die Hauptstadt von Schweiz?");
fragen.Add("Wie ist die Hauptstadt von Aegytphen?");
fragen.Add("Wie ist die Hauptstadt von Spanien?");
fragen.Add("Wie ist die Hauptstadt von Norwegen?");
fragen.Add("Wie ist die Hauptstadt von Dänemark?");

for (int i = 0; i < 4; i++)
{
Random RndNr = new Random();
int x = 7;
int zufallszahl = RndNr.Next(0, x);
Console.WriteLine(fragen[zufallszahl] + " (Index der Frage: " + zufallszahl + ")");
fragen.Remove(fragen[zufallszahl]);
x--;
Console.ReadKey();
}


Bekomme ständig einen Ausnahmefehler der Index in der Console.WriteLine-Zeile liegt außerhalb des Bereichs, ich verstehe nicht warum. Ich mach doch immer x-- also verringert sich die höchstmögliche Indexzahl bei jedem Durchlauf der for-Schleife um 1. Und ich Remove() jeden Durchlauf eine Frage von der Liste.


Danke für eure Antworten
News:
27.11.2015
mapa 13 4
3 Antworten
1
Und das
Random RndNr = new Random();
gehört auf jeden Fall außerhalb der for-Schleife, ansonsten ist die ermittelte Zufallszahl nicht mehr Zufall...

lge
28.11.2015
cybere 353 9
0
Setzte

x = fragen.Count - 1


Wenn du nach jeder Frage die aktuelle Frage aus der Liste entfernst, kannst du nicht den maximalen Wert für die Zufallszahl immer wieder auf 7 setzen.
Das zweite Problem ist, dass die Liste mit dem Index 0 anfängt. Wenn du 7 Einträge in deiner Liste hast, dann hat die Liste einen Indexbereich von 0-6, d.h. der höchste Zufallswert darf also nur 6 sein.

Die Zeile
x--;

kannst du löschen
27.11.2015
multi1209 848 1 8
0
Super vielen Dank ;)
Hätte ja im Prinzip eigentlich
int x = 7;

nur vor und nicht in die for-Schleife schreiben müssen, dann hätte es funktioniert!

Gruß
27.11.2015
mapa 13 4
Es muss aber x = 6 lauten, denn wenn als Zufallszahl die 7 kommt wirst du eine Exception bekommen.
multi1209 30.11.2015

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH