Hallo,
ich sitze nun seit vielen Stunden an einer Aufgabe und brauche mal wieder einen Denkanstoß.
Ändern Sie das Hangman-Spiel so, dass das Wort nicht mehr zufällig aus einem Array ermittelt wird, sondern aus der Datei, die Sie mit den Methoden datenLesen()/datenSchreiben erstellt haben. Das Wort soll aber nach wie vor zufällig ermittelt werden.
Was mir klar scheint:
1)Es soll ein Wahlfreier Zugriff auf dieser Datei erfolgen.
2) Benötigt wird eine Variable die die Positionierung angibt.
3) Mittels der Klasse Random ist es möglich eine zufällige Zahl an die Variable(für Positionierung) zu übergeben.
Hierbei ist erforderlich: Das der Start für den Zugriff an der Position 4(Byte) beginnt, da auf den vorherigen Bytes die Daten(Zahlen) der Positionierungen befinden.
Mein Problem: Ich habe mir lange Zeit den Kopf zerbrochen und egal was mir auch eingefallen ist( und ich bin kreativ
)
nichts hat mich annähernd zu meiner Lösung gebracht. Entweder wurde Nur der Wert/Stelle der Positionierung zufällig ausgegeben mit jeweils des ersten geschriebenen Wort der Datei. Oder es kam Hauptsächlich Datenmüll beim Zugriffsversuch raus.
Wie kriege ich es hin, dass ich den "Zufallsgenerator" auf bestimmte Werte eingrenzen kann?
Folgend ist mein code mit der Methode datenZufällig().
Über jede hilfreiche/Lehrreiche Antwort bedanke ich mich schon mal im vorraus.
ich sitze nun seit vielen Stunden an einer Aufgabe und brauche mal wieder einen Denkanstoß.
Ändern Sie das Hangman-Spiel so, dass das Wort nicht mehr zufällig aus einem Array ermittelt wird, sondern aus der Datei, die Sie mit den Methoden datenLesen()/datenSchreiben erstellt haben. Das Wort soll aber nach wie vor zufällig ermittelt werden.
Was mir klar scheint:
1)Es soll ein Wahlfreier Zugriff auf dieser Datei erfolgen.
2) Benötigt wird eine Variable die die Positionierung angibt.
3) Mittels der Klasse Random ist es möglich eine zufällige Zahl an die Variable(für Positionierung) zu übergeben.
Hierbei ist erforderlich: Das der Start für den Zugriff an der Position 4(Byte) beginnt, da auf den vorherigen Bytes die Daten(Zahlen) der Positionierungen befinden.
Mein Problem: Ich habe mir lange Zeit den Kopf zerbrochen und egal was mir auch eingefallen ist( und ich bin kreativ
nichts hat mich annähernd zu meiner Lösung gebracht. Entweder wurde Nur der Wert/Stelle der Positionierung zufällig ausgegeben mit jeweils des ersten geschriebenen Wort der Datei. Oder es kam Hauptsächlich Datenmüll beim Zugriffsversuch raus.
Wie kriege ich es hin, dass ich den "Zufallsgenerator" auf bestimmte Werte eingrenzen kann?
Folgend ist mein code mit der Methode datenZufällig().
Java:
public void datenZufall() {
try(RandomAccessFile datei = new RandomAccessFile("woerter.bin", "r")) {
//für das Positionieren
long zufall = 0;
Random i = new Random();
//10 Werte sollen abgedeckt sein
zufall = i.nextLong(10);
//ist die neue Position gültig?
if (zufall <= datei.length()-4)
//dann positionieren
datei.seek(zufall);
//lesen und anzeigen
add(new JLabel("Wert an Position: " + zufall));
add(new JLabel(datei.readUTF()));
//zahl.setText(Integer.toString(anzahlWoerter));
pack();
}
catch (IOException e) {
JOptionPane.showMessageDialog(this, "Beim einlesen ist ein Problem aufgetreten");
e.printStackTrace();
}
}
Über jede hilfreiche/Lehrreiche Antwort bedanke ich mich schon mal im vorraus.