JavaFX String aus TextField reagiert nicht wie erwartet

MutuKenji

Mitglied
Hallo,
ich habe ein Problem mit der Verwendung des Strings, den ich aus einem TextField ausgelesen habe. Meinen Fehler kann ich auch reproduzieren:

Java:
public TextField eingabe;
public TextArea ausgabe;

public void tiefensuche(javafx.event.ActionEvent actionEvent) {
    if (eingabe.getText().matches("\\d+")){
        ausgabe.setText(graph.tiefensuche(Integer.parseInt(eingabe.getText())));
    } else if (namensListe().contains(eingabe.getText())) {
        ausgabe.setText(graph.tiefensuche("Name"));

    } else {
        ausgabe.setText("Es fehlt die Eingabe des Startortes");
    }
}

Der Quelltext
Java:
if (eingabe.getText().matches("\\d+")){
            ausgabe.setText(graph.tiefensuche(Integer.parseInt(eingabe.getText())));
    } else if (namensListe().contains(eingabe.getText())) {
funktioniert wie gewünscht, die Ergebnisse von tiefensuche werden ausgegeben und die namensListe wird richtig ausgewertet.

Probleme verursacht eingabe.getText() in der nächsten Zeile:
ArrayIndexOutOfBoundsException: -1
tiefensuche(String s) sucht den Index von s aus einer ArrayList und ruft dann tiefensuche(int i) auf.

Gebe ich einen vorhandenen Namen direkt oder auch als Variable ein, funktioniert alles.
Java:
ausgabe.setText(graph.tiefensuche("Name"));

Rechtschreibfehler können ausgeschlossen werden, da ausgabe.getText() mit den Namen in der Liste verglichen wird.

Der Fehler tritt also nur auf, wenn ich eine Methode mit einem String-Parameter aufrufen möchte, der eingelesen wird. Dabei ist es egal, ober der String direkt eingegeben wird oder erst in einer Variablen abgespeichert wird. Auch der Umweg mit einer Methode innerhalb der Klasse den Index des Strings herauszufinden und dann die Methode mit dem int-Wert aufzurufen funktioniert nicht.
Java:
ausgabe.setText(graph.tiefensuche(indexFinden(eingabe.getText()));

Danke für die Hilfe!
 
Vielleicht ein bisschen konkreter:
Ich habe die Methode indexFinden in der Klasse Graph:
Code:
class Graph{
    String[] ortsliste = {"aaa", "bbb", "ccc"};
    ...
    int indexFinden(String s){
        int index = -1;
        for (int i = 0; i< ortsliste.length; i++){
            if (ortsliste[i].getName().equals(s)){
                 index = i;
                 break;
            }
        }
    return index;
    }
}

Wenn ich in der Controllerklasse (Instanz von Graph als Attribut graph vorhanden)
graph.indexFinden("aaa") eingebe wird der Index 0 ausgegeben, bei
graph.indexFinden(eingabe.getText()) wird -1 ausgegeben, selbst wenn im Textfeld "aaa" eingegeben ist.
 
Hab es nur überflogen aber hast du mal versucht vorher die Rückgabe von getText() zu bearbeiten und alle unnötigen Leerzeichen / Zeilenumbrüche zu löschen? (trim() Methode)
 

Zurück
Oben