Fehlersuche

Llois41

Mitglied
Hallo zusammen,

ich hoffe jemand kann mir bei der Fehlersuche helfen, ich weiß nicht genau wo meiner liegt, folgender Code:
Java:
int y = 40;
            int y2 = 50;
            String ausgabe;
            String freizeit = "";

          
            for (int i = 0; i < Nutzer.aktuellerNutzer.getAlleSuchanfragen().length; i++) {
                freizeit="";
              
                for(int j = 0; j<Nutzer.aktuellerNutzer.getAlleSuchanfragen()[i].getParameterFreizeitaktivitäten().length;j++)
                {
                    if(!Nutzer.aktuellerNutzer.getAlleSuchanfragen()[i].getParameterFreizeitaktivitäten()[j].equals("-")){
                        freizeit += Nutzer.aktuellerNutzer.getAlleSuchanfragen()[i].getParameterFreizeitaktivitäten()[j] + ", ";
                    }
                  
                }
                  
                  
              
                ausgabe = "Alter: Von " + Nutzer.aktuellerNutzer.getAlleSuchanfragen()[i].getParameterAlterMinimum()
                        + " bis " + Nutzer.aktuellerNutzer.getAlleSuchanfragen()[i].getParameterAlterMaximum()
                        + " gesuchte Sprache: " + Nutzer.aktuellerNutzer.getAlleSuchanfragen()[i].getParameterIchLerne()
                        + " Geschlecht: " + Nutzer.aktuellerNutzer.getAlleSuchanfragen()[i].getParameterGeschlecht()
                        + " Freizeitaktivitäten: " + freizeit;
              
              
                txtMeineSuchanfragen[i] = new JTextArea(ausgabe);
                txtMeineSuchanfragen[i].setBounds(25, y, 279, 45);
                txtMeineSuchanfragen[i].setLineWrap(true);
                txtMeineSuchanfragen[i].setWrapStyleWord(true);
                loeschen2.add(new JCheckBox());
                loeschen2.get(i).setBounds(335, y2, 25, 25);
                plsuchanfragen.add(loeschen2.get(i));
                plsuchanfragen.add(txtMeineSuchanfragen[i]);
                y += 50;
                y2 += 50;

"freizeit" wird immer überschrieben, alle anderen Ausgaben stimmen, bestimmt hab ich wieder was offensichtliches Übersehen, aber hierdran hängt gerade mein Programm.

Ich hoffe jemand erbarmt sich mir zu helfen :D
Es liegt auch nicht am String, mit einer ArrayList<String> hat das genauso wenig funktioniert.

Gruß
 

Joose

Top Contributor
"freizeit" soll auch bei jedem Schleifendurchlauf überschrieben werden oder?

Anmerkung zu deinem Code:
Java:
for (int i = 0; i < Nutzer.aktuellerNutzer.getAlleSuchanfragen().length; i++) {
   freizeit = "";
   .....[] aktuelleSuchanfrage = Nutzer.aktuellerNutzer.getAlleSuchanfragen()[i];

   for(int j = 0; j < aktuelleSuchanfrage.getParameterFreizeitaktivitäten().length; j++) {
       if(!aktuelleSuchanfrage.getParameterFreizeitaktivitäten()[j].equals("-")) {
           freizeit += aktuelleSuchanfrage.getParameterFreizeitaktivitäten()[j] + ", ";
       }
   }

   ausgabe = "Alter: Von " + aktuelleSuchanfrage.getParameterAlterMinimum()
       + " bis " + aktuelleSuchanfrage.getParameterAlterMaximum()
       + " gesuchte Sprache: " + aktuelleSuchanfrage.getParameterIchLerne()
       + " Geschlecht: " + aktuelleSuchanfrage.getParameterGeschlecht()
       + " Freizeitaktivitäten: " + freizeit;
Speichere dir doch die aktuelle Suchanfrage zwischen, dadurch wird dein Code um einiges lesbarer.
Warum steht bei allen Methoden "Parameter" dabei? Ja ok eine Suchanfrage hat verschiedene Parameter, aber überall den Prefix "Parameter" zu verwenden macht doch die Namen unnötig lange würde ich meinen. (kenn natürlich nicht den kompletten Code, könnte also auch seinen Sinn haben)
 

Harry Kane

Top Contributor
"freizeit" wird immer überschrieben
Welchen Wert hat "freizeit", und welchen Wert erwartest du?
P. S. Der Code sieht grauslich aus.
"Nutzer" hat wohl die statische Variable "aktuellerNutzer", und die hat eine Methode "getAlleSuchAnfragen", die offenbar ein Array von irgendwas zurückliefert. Dieses "irgendwas" hat eine Methode "getParameterFreizeitaktivitäten", die ein Array von irgendwasAnderem zurückliefert.
Ich würde dringend dazu raten, ein paar Objekte zwischenzuspeichern:
Java:
Nutzer einNutzer = Nutzer.getAktuellerNutzer();
Irgendwas[] irgendwasArray = einNutzer.getAlleSuchanfragen();
for(int i = 0; i < irgendwasArray.length; i++){
    Irgendwas irgendwas = irgendwasArray[i];
    freizeit = "";
    IrgendwasAnderes[] wasAnderesArray = irgendwas.getParameterFreizeitaktivitäten();
    for(int j = 0; j < wasAnderesArray; j++){
        if(wasAnderesArray[j].equals("-")){
            freizeit += wasAnderesArray[j]+",";
        }
    }
}
 

Llois41

Mitglied
Also ich lade mir über folgende Methode beim Anmelden des Nutzers dessen Suchanfragen aus der DB:

Java:
public Suchanfrage[] alleSuchanfragenLaden() {
        try {
            stmt = con.createStatement();
            String query = "SELECT * FROM suchanfrage WHERE nutzerMail LIKE UPPER('" + getMailPruef() + "')";

            Suchanfrage[]suchArr = new Suchanfrage[Nutzer.aktuellerNutzer.getAlleSuchanfragen().length];
            ResultSet rs = stmt.executeQuery(query);
            String[] parameterFreizeit = new String[10];
            int i = 0;

            while (rs.next()) {

                for (int j = 8; j < parameterFreizeit.length + 8; j++) {
                    parameterFreizeit[j - 8] = rs.getString(j);
                }
                suchArr[i] = new Suchanfrage(rs.getInt(3), rs.getInt(4), rs.getString(7), rs.getString(5),
                        rs.getString(6), parameterFreizeit, null);
                //System.out.println(suchArr[i].toString()); An dieser Stelle stimmen die Werte noch
                i++;
             
            }
         
            rs.close();
            stmt.close();
            con.close();
            return suchArr;

        } catch (Exception e) {
            System.out.println("****Fehlermeldung alleSuchanfragenLaden**** ->" + e);
            return null;
        }

    }

Dieses Array wird direkt im Nutzer-Attribut alleSuchanfragen (Suchanfragen[]) gespeichert, sobald ein Nutzer erzeugt wird (sich anmeldet). In dieser Methode werden auch alle Suchanfragen noch richtig angezeigt, mit allen passenden Parametern.

Nun möchte ich diese Suchanfragen in der GUI-Klasse auslesen und anzeigen, allerdings bekomme ich nun zwar noch bei allen anderen Parametern die richtigen Werte angeziegt, allerdings bei dem Array Freizeitaktiviäten bei jeder Suchanfrage die Werte der letzten Suchanfrage.

EDIT:schon im Nutzer werden bei allen Suchanfragen nur die Freizeitaktivitäten der letzten Suchanfrage gespeichert, alle anderen Parameter stimmen

Mein Fenster, welches die Freizeitaktivitäten-Eingabe annimmt hat ein statisches Attribut, allerdings wird das in diesem Aufruf nie! aufgerufen, von daher sollte das eigentlich kein Problem sein mMn, da die Werte ja direkt aus der DB geladen werden.
 
Zuletzt bearbeitet:

Llois41

Mitglied
Alles klar ich hab die Lösung gefunden, es war diesmal nichts statisches, sondern wurde bei jedem Durchlauf die Freizeit-Liste überschrieben, da fehlte einfach immer die Leerung. Danke für eure Hilfe, Thread kann dann zu :D
 

Ähnliche Java Themen

Neue Themen


Oben