JTextField in ArrayList speichern

Ich möchte ein Sortiment erstellen. Dabei werden zwei Eingaben per JTextField gemacht (Artikelname und Anzahl) und die sollten in die ArrayListe Sortiment gespeichert werden.
Das Fenster zur Eingabe der Werte hat zwei Buttons (Fertig) (Weiteren Artikel hinzufügen). Wenn ich auf Fertig klicke zeigt er alle Artikel mit Anzahl an, bei Klick auf weiter... füge ich weitere hinzu. Soviel zur Übersicht.

Nun wurde mir vorgegeben, dass es eine zweite Klasse gibt (Artikel). Dort ist der Code gegeben und unveränderbar:
Java:
public class Artikel{
    String name;
    int anzahl;
    
    public Artikel(String name, int anzahl) {
        this.name= name;
        this.anzah= anzahl;
    }

    public int getAnzahl() {
        return anzahl;
    }

    public String getName() {
        return name;
    }
}
im Main Teil wird gebastelt. So sieht bei mir der Code aus und ich komme nicht weiter. Ich will die Eingaben in die ArrayListe speichern, aber nicht mal das bekomme ich hin. Ständig Fehler. Ausserdem ist inputAnzahl ein Text aber ich benötige ein Int, wegen der Klasse Artikel int anzahl definiert wurde. Ich versuchte das mit parseInt zu formatieren
Integer anzahl= Integer.parseInt(inputAnzahl.getText());

Und so füge ich der ArrayList die Eingaben zu:
sortiment.add(new Artikel(inputName, inputAnzahl));

Aber das ergibt Fehler. Ich bin ratlos.

Java:
import java.util.ArrayList;
import javax.swing.*;

public class Main {
    public static void main(String[] args) {
        ArrayList<Artikel> sortiment= new ArrayList<Artikel>();
        
        JTextField inputName = new JTextField();
        JTextField inputAnzahl = new JTextField();
        Object [] inputFields = {"Name", inputName, "Anzahk", inputAnzahl};
        String [] buttons = {"Fertig", "Weiteren Artikel hinzufügen"};
        
        Integer anzahl= Integer.parseInt(inputAnzahl.getText());
        int klick= 1;
        while (klick==1) {
            inputName.setText("");
            inputAnzahl.setText("");
            klick= JOptionPane.showOptionDialog(null,
                inputFields,
                "Sortiment erfassen",
                JOptionPane.DEFAULT_OPTION,
                JOptionPane.PLAIN_MESSAGE,
                null, buttons, buttons[0]);
            
            sortiment.add(new Artikel(inputName, inputAnzahl));
            }
        

        System.out.println("Sortiment:");
        for (Artikel a: sortiment) {
            System.out.println(a.getName()+"\t"+p.getAnzahl());
        }

    }
}
 
Mehrere Punkte fallen direkt auf:
a) Integer anzahl= Integer.parseInt(inputAnzahl.getText()); parst den Inhalt von inputAnzahl. Aber an der Stelle ist ja noch kein Wert eingegeben worden.
b) new Artikel(inputName, inputAnzahl Artikel braucht doch den eingegebenen Text einmal als String und einmal als Zahl. Die InputBoxen selbst funktionieren natürlich nicht.
==> Wie kommst Du an den Text der Eingabefelder heran? (Schau dir ggf. den Punkt a) an!)
==> Wenn Du die Eingabe hast: Wie kannst Du daraus eine Zahl machen? (Ebenfalls in a) schon enthalten)
 
ok das Problem habe ich jetzt gelöst. Danke für den Hinweis :)
Java:
............
        int klick= 1;
        while (klick==1) {
            inputName.setText("");
            inputAnzahl.setText("");
            klick= JOptionPane.showOptionDialog(null,
                inputFields,
                "Sortiment erfassen",
                JOptionPane.DEFAULT_OPTION,
                JOptionPane.PLAIN_MESSAGE,
                null, buttons, buttons[0]);
            int anzahl = Integer.parseInt(inputAnzahl.getText());
            sortiment.add(new Artikel(inputName.getText(), anzahl));
............
Jetzt möchte ich noch folgendes auflisten. Die Summe aller Artikel im Sortiment. Also Summe der ArrayListe für (Anzahl). Leider bin ich auch hier nicht erfolgreich. So habe ich es probiert:
Java:
        int sum = 0;   
        for (int p : sortiment.get(Artikel(anzahl))) {
            int preis = int.parseInteger(inputAnzahl.getText());
            sum += p;
        }
bei Artikel(anzahl) meckert er rum "anzahl cannot be resolved to a variable".
 
bin mittlerweile selbst drauf gekommen: :)
Java:
        int sum = 0;   
        
        for (Artikel a: sortiment) {
            sum += a.anzahl;
        }
System.out.println("Total: "+sum);
also eigentlich sehr billig. Bin total verwirrt mit all den .get() und get(Artikel(...)) oder getText().

Kann mich jemand mal kurz aufklären wie man den "Werten" in der Arraylist sagt, wie z.B. oben habe ich zwei "Elemente" pro Zeile, einmal den Namen des Artikels und einmal die Anzahl. Der Typ ist Artikel. Wie sagt man denen in der Java-Fachsprache?
Ich habe irgendwie ein Durcheinander mit Objekten, Attributen, Variablen etc.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben