Schönen guten Abend liebe Community,
ich habe vor Kurzem mit meinem ersten Projekt - Galgenmännchen mit "Visualisierung" durch Strings in der Konsole - angefangen, es funktioniert auch alles wunderbar, vom Starten des Spiels über die Überprüfung, ob das zufällig gewählte Wort richtig ist oder nicht zum Spielende.
Was mir allerdings Kopfschmerzen bereitet, ist die Tatsache, dass folgende Methode nicht will, wie ich will:
Ich habe das Ganze schonmal kommentiert, wenn ich schon da falsch liege, bitte berichtigen. Der "Fehler" ist nun, dass als Wort immer die "Ersatz-Möglichkeit", nämlich "1" gewählt wird. Ich habe die "wordlist.txt" mit ca. 91000 deutschen Wörtern als "wordlist.txt" im selben package wie die Klasse WORTAUSWAHL abgespeichert.
Wie bekomme ich es hin, dass ein Wort aus diesem .txt-File ausgewählt und an die Hauptklasse zurückgegeben wird?
Ich hoffe auf schnelle Hilfe, weil es nach drei Tagen nun langsam wirklich frustrierend wird,
LG Anta
ich habe vor Kurzem mit meinem ersten Projekt - Galgenmännchen mit "Visualisierung" durch Strings in der Konsole - angefangen, es funktioniert auch alles wunderbar, vom Starten des Spiels über die Überprüfung, ob das zufällig gewählte Wort richtig ist oder nicht zum Spielende.
Was mir allerdings Kopfschmerzen bereitet, ist die Tatsache, dass folgende Methode nicht will, wie ich will:
Java:
package hangman;
import java.io.*;
public class WORTAUSWAHL{
public static String selectWord(int wortLaenge) {
try { // Fehlerhandling
String word = "";
boolean ende;
double randomZahl;
do{
ende = false;
randomZahl = Math.random();
randomZahl *= 91681; // Da Math.random nur zwischen 0 und 1, *91000 (grob die Anzahl der Wörter im Wörterbuch)
randomZahl = new Double(randomZahl).intValue(); // Math.random gibt auch kommazahlen, also cast nach int
try (FileReader fr = new FileReader("wordlist.txt") // Lade "wordlist.txt". Im selben Verzeichnis lagern!
) {
BufferedReader br = new BufferedReader(fr); // Lese aus dem File
for(int i=1;i<randomZahl;i++){ // Lese eine zufällige Anzahl an Wörtern, damit
br.readLine(); // der "Lesekopf" an der richtigen Stelle steht
}
do{
word = br.readLine(); // Nun das Wort auch speichern, falls
if(word == null){ // das Wort nicht -Nichts- ist (Ende der Liste) und ....
ende = true;
break; // break verhindert eine Exception durch Erreichen des Listenendes
}
} // .... das Wort die geforderte Anzahl an Buchstaben hat,
while(word.length() != wortLaenge); // wenn nicht, nächstes Wort lesen usw.
br.close(); // Buffer müssen auch wieder beendet werden,
} // Lese aus dem File
}
while (ende);
return word; }
catch(IOException c) { // Falls es einen Fehler gibt (datei nicht lesbar usw)
String word = "1"; // wird word = "1", was später als FehlerZeichen gesehen wird
return word;}
}
}
Ich habe das Ganze schonmal kommentiert, wenn ich schon da falsch liege, bitte berichtigen. Der "Fehler" ist nun, dass als Wort immer die "Ersatz-Möglichkeit", nämlich "1" gewählt wird. Ich habe die "wordlist.txt" mit ca. 91000 deutschen Wörtern als "wordlist.txt" im selben package wie die Klasse WORTAUSWAHL abgespeichert.
Wie bekomme ich es hin, dass ein Wort aus diesem .txt-File ausgewählt und an die Hauptklasse zurückgegeben wird?
Ich hoffe auf schnelle Hilfe, weil es nach drei Tagen nun langsam wirklich frustrierend wird,
LG Anta