Das Leerzeichen der Tastatur wird nicht gleichgesetzt mit dem Leerzeichen aus der Text Datei

Ich erstelle ein Spiel wie ZTYPE -- Wörter werden durch ein BufferedReader eingelesen und in einer gewissen Zeit müssen diese Wörter abgetippt werden. Das Funktioniert soweit. Wenn ich allerdings ein Wort mit einem Leerzeichen zwischendrin habe wird das Leerzeichen nicht abgearbeitet.
Als Beispiel das Wort: 1 + 1 = 2

Die CodeZeilen für die Abarbeitung sowie den Bufferreader werde ich hier zeigen:

BufferReader:
private ArrayList<String> liste;

public Wörterbuch() {
this.liste = new ArrayList<String>();
}

public void einlesen(String dateiname) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(dateiname));
String line;
while((line=reader.readLine())!=null){
this.liste.add(line);
System.out.println(liste);
}
reader.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
finally{
if(reader!=null){
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Registrieren der Tasteneingabe:

this.setOnKeyTyped(e -> {
System.out.println("Eingabe registriert: "+e.getCharacter());

this.controller.registriereTasteneingabe(e.getCharacter());
});
Methode RegistriereTasteneingabe (noch nicht fertig, aber umrelevant für meine Frage)
public void registriereTasteneingabe(String eingabe) {
boolean erfolgreich = this.derzeitigesSpiel.registriereTastatureingabe(eingabe);
if (!erfolgreich) {
// Falschen Buchstaben getippt
}
}
Methode registriereTastatureingabe

public boolean registriereTastatureingabe(String eingabe) {
/**
* Fälle:
* 1) Kein Wort wurde bisher "angefangen" hallo, baum, auto
* 2) Ein Wort wurde angefangen HAllo, baum, auto
* 3) Mehrere Worte haben den gleichen Anfang SPiegel, SPass
*/

// Finde die Worte, bei denen bisher am meisten eingetippt wurde
int maximalerFortschritt = 0;
for (int i = 0; i < this.aktiveWorte.size(); i++) {
maximalerFortschritt = Math.max(maximalerFortschritt, this.aktiveWorte.get(i).schonEingetippteZeichen());
}

// Bei den Worten, wo bisher am meisten eingetippt wurde: Tippe weiter :)
boolean richtigeTasteGetroffen = false;
for (int i = 0; i < this.aktiveWorte.size(); i++) {
if (this.aktiveWorte.get(i).schonEingetippteZeichen() == maximalerFortschritt) {
richtigeTasteGetroffen = richtigeTasteGetroffen | this.aktiveWorte.get(i).buchstabeEintippen(eingabe.charAt(0));

}
}

// Setze alle Worte zurück, die nicht dem neuen maximalen Fortschritt entsprechen
for (int i = 0; i < this.aktiveWorte.size(); i++) {
// Hat ein Wort noch den "alten" Fortschritt?
if (richtigeTasteGetroffen && this.aktiveWorte.get(i).schonEingetippteZeichen() == maximalerFortschritt) this.aktiveWorte.get(i).resetWord();
}

//return this.aktivesWort.buchstabeEintippen(eingabe.charAt(0));
return richtigeTasteGetroffen;
}
}

und die letzte Methode buchstabeEintippen:

public boolean buchstabeEintippen(char zeichen) { // character := zahl für buchstabe (ascii-codierung)
// ganzeswort; Hallo
// zND: 5
// zeichen: E
// => kontrollieren, ob H.equals(E)?
char einzutippendesZeichen = ganzeswort.charAt(ganzeswort.length()-zeichenNochDa.get());
if (einzutippendesZeichen == zeichen) {
this.zeichenNochDa.set(this.zeichenNochDa.get()-1);
return true;
}
else {
return false;
}

}`
 
K

kneitzel

Gast
Also ich habe mir jetzt deinen Code angesehen und die Frage .... aber irgendwie werde ich nicht ganz schlau, was denn nun genau Dein Problem ist ...

Aber nur mal ein Hinweis to try-with-resources:
Code:
public void einlesen(String dateiname) {
  try (BufferedReader reader = new BufferedReader(new FileReader(dateiname))) {
    String line;
    while((line=reader.readLine())!=null){
      this.liste.add(line);
      System.out.println(liste);
    }
  } catch (FileNotFoundException e) {
    e.printStackTrace();
  } catch (IOException e) {
    e.printStackTrace();
  }
}

Das wird doch gleich viel lesbarer ohne das try / finally, oder?
(Ansonsten aber gut umgesetzt. Auf den ersten Blick ist mir nur aufgefallen, dass beim Erfolg 2 Mal close() aufgerufen wurde. Einmal im try-Block und dann noch einmal im finally Block ...

Ansonsten fällt mir da erst einmal nichts groß auf. Aber Code bitte immer in Code-Tags posten. Und dann evtl. ein ganzes ausführbares Codebeispiel bauen, das das Problem zeigt.

Du hast das Problem, dass bei der Eingabe das Leerzeichen nicht dem ' ' entspricht? Oder kann es an der Textdatei liegen?
Einfach mal ein kleines Testprogramm schreiben und dann immer den Wert der Zeichen ausgeben ... dann siehst man am ehesten, was da Sache sein könnte ...
 
Ich habe gerade bemerkt, dass wenn ich ein Leerzeichen eintippe ein Button betätigt wird. Der Button ist in der selben Klasse wie setKeyOnTyped -- und den Button löse ich aus durch setOnAction --> kann ich das irgendwie beheben, dass mit einem Leerzeichen der Button ausgelöst wird?
 
K

kneitzel

Gast
Warum willst Du denn Eintrag ändern? Ist doch ok so, wie er ist. Ist doch nichts Schlimmes, dass man eine Ursache nicht sofort gesehen hat. Und das kann evtl. jemand anderem auch helfen, wenn er ein solches Problem hat.

Nach 30 Minuten oder so ist ein Beitrag für einen nicht mehr editierbar. Wenn, dann müsste das ein Moderator machen ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Zoom per Tastatur Spiele- und Multimedia-Programmierung 4
Redfrettchen Tastatur für zwei Spieler teilen? Spiele- und Multimedia-Programmierung 8
TobiasN Wer Wird Millionär Spiele- und Multimedia-Programmierung 4
B Bild wird nicht geladen Spiele- und Multimedia-Programmierung 4
R JPanel wird erst im Fullscreen angezeigt Spiele- und Multimedia-Programmierung 1
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
S GetBufferStrategy-Methode wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
G Wer wird Millionär / Fragefenster Spiele- und Multimedia-Programmierung 6
L Transparenz wird magenta Spiele- und Multimedia-Programmierung 3
Polarfuchs Status von Midi Datei(wird gerade abgespielt oder nicht) Spiele- und Multimedia-Programmierung 0
A Bild(sequenz) wird nicht geladen Spiele- und Multimedia-Programmierung 1
F 4 Gewinnt - Code wird ignoriert Spiele- und Multimedia-Programmierung 7
C Mein Programm wird sofort terminated Spiele- und Multimedia-Programmierung 8
A [LWJGL] BMP Textur wird nicht richtig dargestellt Spiele- und Multimedia-Programmierung 8
S LWJGL Rechteck wird nicht gezeichnet Spiele- und Multimedia-Programmierung 6
J Versch. Pfeiltasten angezeigt obwohl nur 1 gedrückt wird Spiele- und Multimedia-Programmierung 2
Creylon [LWJGL] Textur wird falsch angezeigt Spiele- und Multimedia-Programmierung 12
S Nur den Bereich des JPanels zeichen der im Viewport des JScrollPane angezeigt wird Spiele- und Multimedia-Programmierung 8
Q BufferedImage vs. Heap Space ‒ Warum wird der Speicher nicht freigegeben? Spiele- und Multimedia-Programmierung 6
M Karte wird falsch gezeichnet Spiele- und Multimedia-Programmierung 9
H Skalierung eines Polygons ohne das es verschoben wird Spiele- und Multimedia-Programmierung 3
C Alles hängt, wenn ein Sound abgespielt wird Spiele- und Multimedia-Programmierung 9
K Transformation wird nicht angewendet Spiele- und Multimedia-Programmierung 3
A Wie wird die Person im Game animiert, dass sie ihre Körperteile bewegen? Spiele- und Multimedia-Programmierung 3
A Shape Geometry, wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
L Progress Bar wird erst zu spät ganz angezeigt Spiele- und Multimedia-Programmierung 5
D Jogl:Textur auf GLUquadric wird vertikal spiegelverkehrt dargestellt Spiele- und Multimedia-Programmierung 2
M Java Textadventure HashMap wird nicht befüllt? Spiele- und Multimedia-Programmierung 7
P [JMF] Webcam wird nicht gefunden Spiele- und Multimedia-Programmierung 3
P Erkennen auf welche Objekte gezeigt wird in JoGL Spiele- und Multimedia-Programmierung 6
Steev KeyPressed:Tab wird nicht mehr weitergeleitet Spiele- und Multimedia-Programmierung 2
J JOGL - Bild wird immer wieder weiß Spiele- und Multimedia-Programmierung 2
0x7F800000 weiß einer wozu ANTLR beim build von JOGL verwendet wird? Spiele- und Multimedia-Programmierung 3
J MenuBar wird bei Spiel nicht angezeigt Spiele- und Multimedia-Programmierung 5
L Frame wird geöffnet es wird aber nix angezeigt Spiele- und Multimedia-Programmierung 2
R Die korrekte Breite/Höhe eines Bildes wird nicht erkannt. Spiele- und Multimedia-Programmierung 2
P JOGL: mit glTranslated wird nichts gezeichnet Spiele- und Multimedia-Programmierung 3
F Szene wird nicht komplett angezeigt (Tiefenproblem?) Spiele- und Multimedia-Programmierung 2
G Fragespiel, Hilfe ! like Wer wird Millinär Spiele- und Multimedia-Programmierung 12
M 1. Menüleiste wird doppelt gezeichnet 2. awt auf ein jpanel Spiele- und Multimedia-Programmierung 4
F WakeupOnAWTEvent wird ignoriert! Spiele- und Multimedia-Programmierung 2
C BackgroundSound wird nicht abgespielt Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Neue Themen


Oben