Nicht zu findender Fehler in einem try/catch Block

Antasio

Mitglied
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:

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
 
Danke für die schnelle Antwort... ich habe nun also unter "Source Packages" (ich benutze Netbeans IDE) unter New --> New file eine Datei mit dem Namen "wordlist.txt" abgespeichert, geändert hat sch leider nichts... es wurde ein zweites Package erstellt, in der die Datei lag, und es wurde weiterhin der Ersatzstring "1" ausgewählt.

Kann es sein dass ich einfach zu blöd bin? 😀

LG Anta
 
Zuletzt bearbeitet:
*Repost* Sry :S



Danke für die schnelle Antwort... ich habe nun also unter "Source Packages" (ich benutze Netbeans IDE) unter New --> New file eine Datei mit dem Namen "wordlist.txt" abgespeichert, geändert hat sch leider nichts... es wurde ein zweites Package erstellt, in der die Datei lag, und es wurde weiterhin der Ersatzstring "1" ausgewählt.

Kann es sein dass ich einfach zu blöd bin?

LG Anta
 
Hmm ich sehe gerade, wie ich mich doch recht missverständlich ausgedrückt habe.
Die Datei muss in dem Ordner liegen, in dem auch dein Package startet.

Also bei mir wäre das als Beispiel:
D:\Dropbox\workspace\Java8Test\src\...code
D:\Dropbox\workspace\Java8Test\wordlist.txt

Die anderen Probleme mit dem Code kannst du alleine fixen?
 

Neue Themen


Zurück
Oben