2017-08-25 1 views
0

Die Lösung soll eine Textdatei lesen, die Datensätze enthält, die aus drei Zeilen bestehen. Die erste Zeile des Datensatzes ist ein bestandener Testwert, die zweite Zeile ist eine Frage und die dritte Zeile ist eine Antwort.C# Versucht, eine Datei in Array zu lesen und eine Zeile nach dem Test einer ganzen Zahl zufällig auszuwählen

Wenn es ausgeführt wird, überprüft es, ob es nur einen Datensatz gibt oder ob es mehr als einen gibt.

Das Problem ist, wenn es mehr als eins gibt:
Es soll nach dem Zufallsprinzip eine Zahl im Bereich der Anzahl der Datensätze auswählen, um zu entscheiden, welcher Datensatz. Sobald es sich für diesen Datensatz entschieden hat, soll das Programm sehen, ob der Zufallswert, der erzeugt wird, in dem Bereich des bestandenen Testwerts mit dem bestandenen Testwert übereinstimmt, um den Datensatz zu genehmigen. All dies soll in einer While-Schleife ablaufen, bis ein Datensatz ausgewählt ist, und der Zufallswert wird als Testwert für den Durchgang des Datensatzes übergeben.

Ich glaube, es soll funktionieren, aber wenn ich das Programm starte, scheint es in einer Endlosschleife zu sein, als wenn es nur zwei Datensätze gibt oder wenn der Wert zwei ist.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.IO; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApp1 
{ 
    public partial class Quiz : Form 
    { 
     Random rnd = new Random(0); 
     public Quiz() 
     { 
      InitializeComponent(); 
      checkFile(); 
      quizInit();    

     } 

     void checkFile() 
     { 
      if (File.Exists("quiz.txt")) 
       MessageBox.Show("Quiz File Exists"); 
      else 
      { 
       StreamWriter quizFile = new StreamWriter("quiz.txt"); 
       quizFile.Close(); 
      } 
     } 

     void quizInit() 
     { 
      string[] quiz = File.ReadAllLines("quiz.txt"); 
      string question = ""; 
      string answear = ""; 
      int lineCount = quiz.Length; 
      if (lineCount == 3) 
      { 
       question = quiz[lineCount - 2]; 
       answear = quiz[lineCount - 1]; 
       qLbl.Text = question; 
       aLbl.Text = answear; 
      } 
      if (lineCount > 3) 
      { 

       bool approved = false; 
       int choises = lineCount/3; 
       int selection = 0; 
       int check = 0; 
       while(approved == false) 
       { 
        selection = rnd.Next(1, 2); 
        check = Convert.ToInt32(quiz[selection * 3 - 3]); 
        if(rnd.Next(1,check) == check) approved = true; 
       } 
       qLbl.Text = quiz[selection * 3 - 2]; 
       aLbl.Text = quiz[selection * 3 - 1]; 
       check++; 
       quiz[selection * 3 - 3] = check.ToString(); 
       File.WriteAllLines("quiz.txt", quiz); 
      } 
     } 

     private void newEntryBtn_Click(object sender, EventArgs e) 
     { 
      if (string.IsNullOrWhiteSpace(qTxtbx.Text) && 
       string.IsNullOrWhiteSpace(aTxtbx.Text)) MessageBox.Show("Fill Both Boxes!"); 
      else 
      { 
       StreamWriter quizFile = new StreamWriter("quiz.txt", true); 
       quizFile.WriteLine((1).ToString()); 
       quizFile.WriteLine(qTxtbx.Text); 
       quizFile.WriteLine(aTxtbx.Text); 
       quizFile.Close(); 
      } 
      quizInit(); 

     } 

     private void newBtn_Click(object sender, EventArgs e) 
     { 
      quizInit(); 
     } 
    } 
} 

Dies ist der Eingang:

2 
q 
a 
1 
q1 
a1 
+0

Wie können wir Ihren Code überprüfen, wenn die Eingabe unbekannt ist? –

+0

gerade hinzugefügt Eingang –

Antwort

Verwandte Themen