# Java Zeile aus Textdatei zufällig ausgeben



## odi123 (24. Mai 2015)

Servus liebe Java-Forum Mitglieder,

wir man der Frage sicher entnehmen kann, suche ich aktuell einen Weg, bei Wer wird Millionär, die fragen leicht (mittel und schwer kommen noch) mit den zusätzlichen antworten aus einer anderen Datei Zufällig auszugeben. Also im Prinzip steht die 1. Frage in der Datei Fragen und die 1. Antwort in der Datei Antworten.

Kann mir da jemand helfen? 


```
public static void MillionaerMenue() {
    System.out.println("\n" + PlayerName + ", Willkommen bei Wer wird Millionaer!");
    System.out.println("------------------------------------------------------------------------------------------------------------------------");
    Millionaer();
    }
    
    //Spiel Wer wird Millionaer?
    public static void Millionaer() {
    //Variablen
    int konto = 0;
    int spielEingabe;
 
    //Scanner
    Scanner m = new Scanner (System.in);
    
    //Spiel
    //Fragen auslesen
    //while () {
        try {
            FileReader fragen = new FileReader("C:/Users/Johannes/Desktop/Spiel/Fragen_Leicht.txt");
                        FileReader antworten_l = new FileReader("C:/Users/Johannes/Desktop/Spiel/Fragen_Leicht_Antworten.txt");
            BufferedReader br = new BufferedReader(fragen);
            System.out.println("50 Euro Frage:\n");
                String frage1 = br.readLine();
                System.out.println(frage1+"\n");
                                String antwort1 = br.readLine();
                                System.out.println(antwort1+"\n");;
                String frage2 = br.readLine();
                System.out.println(frage2);
            br.close();
                        
        }
        catch (IOException fehler) {
            System.err.println("Die Datei wurde nicht gefunden!");
        }
        System.out.print("\n\n\n\n\nAuswahl: ");
        spielEingabe = m.nextInt();
        if (spielEingabe == 3) {
            System.out.println("\nHerzlichen Glueckwunsch! Diese Frage hast du richtig beantwortet!\n");
            konto = 50;
            System.out.println("Aktueller Kontostand: "+konto+" Euro.");
        }
        else {
            System.out.println("\nSchade. Diese Frage war leider nicht richtig.\n");
            System.out.println("Du hast "+konto+" Euro gewonnen!\n");
        }
```

Danke für eure Hilfe!!

Euer Odi


----------



## javampir (24. Mai 2015)

nun, um eine zeile aus einer datei zufällig zu lesen, ist es sehr angenehm, zu wissen, wie viele zeilen es gibt.
dann kannst du eine zufallszahl zw 0 und anzahl der zeilen generieren und dann so oft readLine aufrufen, bis du da bist


----------



## odi123 (24. Mai 2015)

Also nehmen wir mal an ich habe 20 fragen und 20 antworten, wie müsste ich das dann machen? Also vom code her :0
Fakt ist, das wenn eine Frage aufgerufen wurde, sie ja logischerweise nicht noch ein 2. mal im selben Spiel aufgerufen werden darf


----------



## Flown (24. Mai 2015)

Naja ich würde alle Fragen in eine Liste packen, per Zufall eines rausnehmen und in der Liste gleich Löschen (das geht normalerweise in einem Schritt, wenn du das mit dem Index machst:


```
List<String> questions = readQuestions();
String randomQuestion = questions.remove((int)(Math.random() * questions.size()));
```


----------



## strußi (24. Mai 2015)

du kannst auch alle fragen mit antworten einlesen, und diese mit einem zufallsgenerator auslesen, und anschließend aus der liste entfernen, 
z.b.
ArrayList<Typ> allQuest; 
Random questNumber= new Random();
int questNo = questNumber.nextInt( allQuest.size());
String question =allQuest.get(questNo);
allQuest.remove( questNo);


----------



## odi123 (26. Mai 2015)

Danke erstmal für die tollen Antworten!!! 
Ich habe alles mal ausprobiert, bin aber leider in dem Gebiet noch zu unerfahren, um da zu einem relativ guten Ergebnis zu kommen. Also ich habe ja 2 .txt Dateien. Eine mit den Fragen und eine mit den Antworten. Das heißt, 1. Zeile Frage = 1. Zeile Antwort.
Könnt ihr mir da villeicht nochmal auf die Sprünge helfen??

LG 

Odi123


----------



## Flown (26. Mai 2015)

Du generierst dir eine Zufallszahl und speicherst sie in eine Variable holst dir beide, Antworten als auch Frage, Elemente.
In meinen Code von vorher:

```
List<String> questions = readQuestions();
List<String> answers = readAnswers();
int pos = (int)(Math.random() * questions.size());
String question = questions.remove(pos);
String answer = answers.remove(pos);
```


----------



## strußi (26. Mai 2015)

@flown questions müsste als typ String[] haben, damit er hier 4 fragen unterbringen kann.


----------



## Flown (26. Mai 2015)

Ich kenn die Datenstruktur ehrlich gesagt nicht, darum ist ja nur ein Hinweis.


----------

