Kann man Zahlenwerte innerhalb einer JList addieren und ausgeben?

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Nico2201

Mitglied
Hallo,

als Java-Anfänger habe ich mir folgendes Projekt ausgedacht:

Man hat eine JList (liste), 3 JTextField's (eingabeName, eingabePreis, eingabeDatum), einen JButton (eingabeSpeichern) und ein JMenu. In den Textfeldern werden Werte eingegeben, die dann auf Knopfdruck in die Liste eingetragen werden sollen (z.B.: Name-Preis-Datum). Am Ende sollen dann alle Preiswerte automatisch addiert und ausgegeben werden, sobald man auf den JButton "eingabeSpeichern" drückt.

Meine Frage dazu ist:

Ist das ganze überhaupt möglich? Seit Stunden sitze ich vor ein und demselben Problem, aber ich finde einfach keine Lösung dafür. Meine Recherche im Internet hat auch nichts ergeben. Abgesehen davon, dass ich mit einem Array arbeiten könnte, womit ich jedoch keine Erfahrung habe.

Den Code für die Methode "EingabeSpeichern", die dem JButton "eingabeSpeichern" angehört, stelle ich euch gerne zur Verfügung, damit ihr ein genaueres Bild davon habt, was ich da eigentlich gemacht habe:

Java:
public void EingabeSpeichern(ActionEvent e) {
       
        String textName = eingabeName.getText();
        String textPreis = eingabePreis.getText();
        String textDatum = eingabeDatum.getText();
       
        if(textName.equals("") || textName.equalsIgnoreCase("Eingabe") && textPreis.equals("") || textPreis.equalsIgnoreCase("Eingabe") && textDatum.equals("") || textDatum.equalsIgnoreCase("Eingabe")) {
           
            eingabeName.setText("Eingabe");
            eingabePreis.setText("Eingabe");
            eingabeDatum.setText("Eingabe");
        }
       
        else {
           
            model.addElement(textName + "-" + textPreis + "-" + textDatum);
            eingabeName.setText("");
            eingabePreis.setText("");
            eingabeDatum.setText("");
                       
            double[] dArray = new double[1];
            dArray[0] = Double.parseDouble(textPreis);
            double summe = 0;
           
            for(int i = 0; i < dArray.length; i++) {
               
                System.out.println(summe = dArray[i] + summe);
            }
        }
    }

Vielen Dank für eure Bemühungen!:)

Freundliche Grüße
 
Klar kann man Werte einer Liste addieren :) in mehren Varianten

Dein Ansatz das in der Funktion zu machen die durch ein Action angesprochen wird ist schon mal gut.

Auch das du aus dem String ein doubel machst ist soweit ok.

Aber warum ist bei dir die Summe ein Array? Da die Summe nur einmal benötigt wird ist das unnötig.
Es reicht eine einfache double Variable und die muss ausserhalt der Methode definiert werden und zwar in der Classe in der die Methode ist.

Code:
class BlaBlubb {
 privat double summe = 0;

public void EingabeSpeichern(ActionEvent e) {
// add Element teil und setText Code
summe = summe + Double.parseDouble(textPreis);
System.out.println(summe);
}
}
 
Hallo,

dein "Problem" ist diese Zeile

Java:
model.addElement(textName + "-" + textPreis + "-" + textDatum);

Das heißt du hast eine JList<String>.

Sinnvoller wäre es ein Objekt zu definieren, welches diese 3 Eigenschaften speichert. Nennen wir es EingabeObjekt. Statt JList<String> hast du dann JList<EingabeObjekt>. Für die Darstellung in der JList musst du noch toString() überschreiben. Es wäre so z.B. auch denkbar nur den Namen in der JList darzustellen und den Preis trotzdem zu speichern.

Wenn du das hast kannst du über diese Elemente in der JList iterieren, dir mit einem Getter den Preis aus dem Objekt holen und addieren.

Die oben genannte Zeile sähe dann z.B. so aus:
Java:
model.addElement(new EingabeObjekt(name, preis, datum));



Edit: Mir ist erst später aufgefallen, dass im Ausgangscode immer nur der letzte Eintrag addiert wird. Dann ist aber das Hauptproblem, dass summe eine lokale Variable ist. Es müsste zur Klassen-Variable werden so wie von melmager korrekt im Beispiel umgesetzt.
 
Zuletzt bearbeitet:
Klar kann man Werte einer Liste addieren :) in mehren Varianten

Dein Ansatz das in der Funktion zu machen die durch ein Action angesprochen wird ist schon mal gut.

Auch das du aus dem String ein doubel machst ist soweit ok.

Aber warum ist bei dir die Summe ein Array? Da die Summe nur einmal benötigt wird ist das unnötig.
Es reicht eine einfache double Variable und die muss ausserhalt der Methode definiert werden und zwar in der Classe in der die Methode ist.

Code:
class BlaBlubb {
privat double summe = 0;

public void EingabeSpeichern(ActionEvent e) {
// add Element teil und setText Code
summe = summe + Double.parseDouble(textPreis);
System.out.println(summe);
}
}

Eine sehr einfache Lösung. Ich habe wohl komplizierter gedacht als es eigentlich ist. Inzwischen funktioniert diese Methode einwandfrei. Vielen Dank!
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück