Erste Schritte Wie speichert und gibt man Arrays aus? (JLabel)

mitscheee

Mitglied
Hallo Forum,

komme bei dem folgenden Code nicht weiter...
Die eingegebenen Noten sollen in einem Array gespeichert sowie anschließend hintereinander in einem JLabel ausgegeben werden.
Allerdings werden alle Werte als "null" angegeben - lediglich der letzte Wert wird korrekt dargestellt.
Lösungsansätze und allgemeine Verbesserungsvorschläge wären toll!

Danke


Java:
import java.text.*;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
import java.util.Arrays;

public class Notenbilanz extends javax.swing.JFrame {
    private JLabel jLabel1;
    private JButton jBtnAnzahlUebernehmen;
    private JLabel jLNote;
    private JButton jBtnNoteUebernehmen;
    private JLabel jLNotenschnitt;
    private JLabel jLSchlechtesteNote;
    private JButton jBtnEnde;
    private JButton jBtnNeu;
    private JLabel jLNotenzahl;
    private JLabel jLBesteNote;
    private JTextField jTFNote;
    private JTextField jTFNotenzahl;
    private JLabel jLNoten;
    public DecimalFormat fzahl;
    public int notenzahl, i;
    public double summe, besteNote, schlechtesteNote, notenschnitt;
    private JLabel lblNoten;
    public  Double [] noten = new Double [notenzahl];
    private JTextField tfNotennummer;
    private JLabel  lblNotennummer;
    private JButton btnNotennummer;
    private JButton btnNeuenWertSpeichern;
    private JTextField tfNeuerWert;
    private JLabel lblNeuerWert;
   
    public static void fill (Double [] noten, int fromIndex, int toIndex ){
       
    }
  
    public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
        Notenbilanz inst = new Notenbilanz();
        inst.setLocationRelativeTo(null);
        inst.setTitle("Notenliste");
        inst.setVisible(true);
        }
    });
    }

    public Notenbilanz() {
    super();
    initGUI();
    }

    private void initGUI() {
    try {
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        getContentPane().setLayout(null);
        this.setPreferredSize(new java.awt.Dimension(408, 253));
        this.setTitle("Notenbilanz");
        {
        fzahl = new DecimalFormat("###,##0.00");
        }
        {
        jLabel1 = new JLabel();
        getContentPane().add(jLabel1);
        jLabel1.setText("Anzahl Noten");
        jLabel1.setBounds(6, 7, 89, 15);
        }
        {
        jTFNotenzahl = new JTextField();
        getContentPane().add(jTFNotenzahl);
        jTFNotenzahl.setBounds(6, 28, 41, 21);
        }
        {
        jBtnAnzahlUebernehmen = new JButton();
        getContentPane().add(jBtnAnzahlUebernehmen);
        jBtnAnzahlUebernehmen.setText("Übernehmen");
        jBtnAnzahlUebernehmen.setBounds(73, 28, 115, 21);
        jBtnAnzahlUebernehmen.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
            jBtnAnzahlUebernehmenActionPerformed(evt);
            }
        });
        }
        {
        jLNote = new JLabel();
        getContentPane().add(jLNote);
        jLNote.setText("1.Note");
        jLNote.setBounds(6, 67, 47, 14);
        jLNote.setVisible(false);
        }
        {
        jTFNote = new JTextField();
        getContentPane().add(jTFNote);
        jTFNote.setBounds(6, 87, 41, 21);
        jTFNote.setVisible(false);
        }
        {
        jBtnNoteUebernehmen = new JButton();
        getContentPane().add(jBtnNoteUebernehmen);
        jBtnNoteUebernehmen.setText("Übernehmen");
        jBtnNoteUebernehmen.setBounds(73, 87, 115, 21);
        jBtnNoteUebernehmen.setVisible(false);
        jBtnNoteUebernehmen.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
            jBtnNoteUebernehmenActionPerformed(evt);
            }
        });
        }
        {
        jLBesteNote = new JLabel();
        getContentPane().add(jLBesteNote);
        jLBesteNote.setBounds(6, 163, 365, 19);
        }
        {
        jLNotenschnitt = new JLabel();
        getContentPane().add(jLNotenschnitt);
        jLNotenschnitt.setBounds(6, 138, 365, 19);
        }
        {
        jLSchlechtesteNote = new JLabel();
        getContentPane().add(jLSchlechtesteNote);
        jLSchlechtesteNote.setBounds(6, 188, 365, 19);
        }
        {
          jLNoten = new JLabel();
          jLNoten.setText("Note:" );
            getContentPane().add(jLNoten);
            jLNoten.setBounds(6, 206, 385, 19);
            jLNoten.setVisible(false);
        }
        {
        jLNotenzahl = new JLabel();
        getContentPane().add(jLNotenzahl);
        jLNotenzahl.setBounds(6, 118, 374, 14);
        }
        {
        jBtnNeu = new JButton();
        getContentPane().add(jBtnNeu);
        jBtnNeu.setText("Neue Berechnung");
        jBtnNeu.setBounds(240, 28, 140, 21);
        jBtnNeu.setVisible(false);
        jBtnNeu.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
            jBtnNeuActionPerformed(evt);
            }
        });
        }
        {
        jBtnEnde = new JButton();
        getContentPane().add(jBtnEnde);
        jBtnEnde.setText("Ende");
        jBtnEnde.setBounds(279, 188, 94, 21);
        {
            lblNoten = new JLabel();
            lblNoten.setVisible(false);
            lblNoten.setBounds(186, 209, 147, 16);
            getContentPane().add(lblNoten);
        }
       
        tfNotennummer = new JTextField();
        tfNotennummer.setBounds(211, 85, 41, 26);
        getContentPane().add(tfNotennummer);
        tfNotennummer.setColumns(10);
       
        JButton btnNotennummer = new JButton("ok");
        btnNotennummer.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                lblNeuerWert.setVisible(true);
                btnNeuenWertSpeichern.setVisible(true);
                tfNeuerWert.setVisible(true);
            }
        });
        btnNotennummer.setBounds(361, 85, 47, 29);
        getContentPane().add(btnNotennummer);
       
        JLabel lblNotennummer = new JLabel(".Note bearbeiten");
        lblNotennummer.setBounds(248, 90, 123, 16);
        getContentPane().add(lblNotennummer);
        {
            btnNeuenWertSpeichern = new JButton("speichern");
            btnNeuenWertSpeichern.setVisible(false);
            btnNeuenWertSpeichern.setBounds(279, 153, 117, 29);
            getContentPane().add(btnNeuenWertSpeichern);
        }
        {
            tfNeuerWert = new JTextField();
            tfNeuerWert.setVisible(false);
            tfNeuerWert.setBounds(227, 156, 41, 26);
            getContentPane().add(tfNeuerWert);
            tfNeuerWert.setColumns(10);
        }
        {
            lblNeuerWert = new JLabel("New label");
            lblNeuerWert.setVisible(false);
            lblNeuerWert.setBounds(211, 135, 61, 16);
            getContentPane().add(lblNeuerWert);
        }
       
        jBtnEnde.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
            jBtnEndeActionPerformed(evt);
            }
        });
        }
        pack();
    } catch (Exception e) {
        e.printStackTrace();
    }
    }

    private void jBtnAnzahlUebernehmenActionPerformed(ActionEvent evt) {
       
       
       
        if (!jTFNotenzahl.getText().equals("")) {
        notenzahl = Integer.parseInt(jTFNotenzahl.getText());
       
        i = 1;
        summe = 0;
        besteNote = 6;
        schlechtesteNote = 0;
        jBtnAnzahlUebernehmen.setVisible(false);
        jTFNotenzahl.setEditable(false);
        jLNote.setVisible(true);
        jTFNote.setVisible(true);
        jBtnNoteUebernehmen.setVisible(true);
        jTFNote.requestFocus();
    } else {
        JOptionPane.showMessageDialog(null, "Anzahl der Noten eingeben!");
        jTFNotenzahl.requestFocus();
    }
    }
   
    private void jBtnNoteUebernehmenActionPerformed(ActionEvent evt) {
       
       
       
    if (!jTFNote.getText().equals("")
        && Double.parseDouble(jTFNote.getText()) >= 1
        && Double.parseDouble(jTFNote.getText()) <= 6) {
     
        summe = summe + Double.parseDouble(jTFNote.getText());
        Double [] noten = new Double [notenzahl];
       
        noten[i-1]=Double.parseDouble(jTFNote.getText());
        notenschnitt = summe / i;
        jLNotenschnitt.setText("Notenschnitt: "
            + fzahl.format(notenschnitt));
        jLNotenzahl.setText("Anzahl eingegebene Noten: "
            + Integer.toString(i));

        if (Double.parseDouble(jTFNote.getText()) > schlechtesteNote) {
        schlechtesteNote = Double.parseDouble(jTFNote.getText());
        jLSchlechtesteNote.setText("schlechteste Note: "
            + Double.toString(schlechtesteNote));
        }
        if (Double.parseDouble(jTFNote.getText()) < besteNote) {
        besteNote = Double.parseDouble(jTFNote.getText());
        jLBesteNote
            .setText("beste Note: " + Double.toString(besteNote));
        }
        if (i == notenzahl) {
        notenschnitt = summe / notenzahl;
        jBtnNoteUebernehmen.setVisible(false);
        jBtnNeu.setVisible(true); 
       // lblNoten.setText("Noten: " );
        jLNoten.setVisible(true);
       
       
        for(int i=0;i<noten.length;i++){
            if(noten[i]!=null) {
                noten [i] = Double.parseDouble(jTFNote.getText());
                jLNoten.setText(jLNoten.getText() + " " + (noten[i]));
               
                
               
               
               
               
            }
        
        }
        } else {
        i++;
        jLNote.setText(Integer.toString(i) + ".Note");
        jTFNote.setText("");
        jTFNote.requestFocus();
        }
    } else {
        JOptionPane.showMessageDialog(null, "gültige Note eingeben!");
        jTFNote.requestFocus();
    }

   

   
   
   
    }

    private void jBtnNeuActionPerformed(ActionEvent evt) {
    i = 1;
    jLNote.setText(Integer.toString(i) + ".Note");
    summe = 0;
    besteNote = 6;
    schlechtesteNote = 0;
    jBtnAnzahlUebernehmen.setVisible(true);
    jTFNotenzahl.setEditable(true);
    jLNote.setVisible(false);
    jTFNote.setVisible(false);
    jTFNote.setText("");
    jBtnNoteUebernehmen.setVisible(false);
    jTFNotenzahl.setText("");
    jTFNotenzahl.requestFocus();
    jLNotenschnitt.setText("");
    jLBesteNote.setText("");
    jLSchlechtesteNote.setText("");
    jLNotenzahl.setText("");
    jBtnNeu.setVisible(false);
   
    }

    private void jBtnEndeActionPerformed(ActionEvent evt) {
    System.exit(0);
    }
}
 
Könntest du deinen Code einmal so beschneiden, dass wir nur noch die Methode haben, in der du die Daten ausliest und ins Array schreibst sowie die, die die Daten aus dem Array dem JLabel übergibt?
 
Zeile 33:
Code:
public  Double [] noten = new Double [notenzahl];

habe überlegt einzufügen
Code:
ArrayList<Double> liste = new ArrayList<Double>();
entspricht die ArrayList dem Speicherort?

Zeile 273
Java:
for(int i=0;i<noten.length;i++){
            if(noten[i]!=null) {
                noten [i] = Double.parseDouble(jTFNote.getText());
                jLNoten.setText(jLNoten.getText() + " " + (noten[i]));

Weiterer Ansatz, wäre alles in eine Methode auszulagern:

Java:
publicvoidarraySpeichern(){

        public  Double [] noten = new Double [notenzahl];

        ArrayList<Double> liste = new ArrayList<Double>();

    }
 
Ok, du fragst innerhalb der for-Schleife ab, ob der Eintrag i im Array noten ungleich null ist. Wenn du noch keine Daten im Array hast, dann sind die natürlich null. Da könnte schon dein Denkfehler liegen.

Und ich hatte es so verstanden, dass du verschiedene Noten auslesen willst, du ließt allerdings immer aus dem selben Textfeld aus und speicherst die Note im Zweifelsfall in jedem Feld des Arrays ab.
 
Das Problem liegt darin, dass du jedes mal ein neues Noten Array erzeugst (Double [] noten = new Double [notenzahl]😉 und dann die letzte Position (i-1) befüllst.
Die for Schleife wird so immer nur einmal durchlaufen; weil ja alles null ist außer der letzten Position.

Weiterhin: Die for Schleife würde auch nicht richtig funktionieren selbst wenn das Noten Array komplett befüllt wäre. Sie wird nach dem Eingeben der letzten Note ausgeführt und liest immer das gleiche TextField aus (jTFNote).

Mögliche Lösung:
Das Array nur einmal erzeugen. z.B. direkt nachdem die Anzahl der Noten bekannt ist. Und zwar als globales Array. (Hast ja sogar schon ein; verwendest es nur noch nicht).
Diese Zeilen:
[JAVA]
noten = Double.parseDouble(jTFNote.getText());
jLNoten.setText(jLNoten.getText() + " " + (noten));
[/JAVA]
direkt vor if (i == notenzahl) schreiben, so dass sie bei jeder Aktion ausgeführt werden.
 
Wie verwende ich denn das Array bzw. wo muss ich hinschreiben/einen Link zum globalen Array erstellen?
Habe deinen Änderungsvorschlag wie folgt übernommen. Allerdings habe ich dort nochmal (Double [] noten = new Double [notenzahl]) erzeugt... Wie kann ich das globale Array (das ganz oben in Zeile 33!? nutzen? - macht der Modifier private Probleme?)
Mittlerweile wird nichts mehr im Label ausgegeben.

Java:
 private void jBtnNoteUebernehmenActionPerformed(ActionEvent evt) {
       
       
       
    if (!jTFNote.getText().equals("")
        && Double.parseDouble(jTFNote.getText()) >= 1
        && Double.parseDouble(jTFNote.getText()) <= 6) {
     
        summe = summe + Double.parseDouble(jTFNote.getText());
        Double [] noten = new Double [notenzahl];
       
        noten[i-1]=Double.parseDouble(jTFNote.getText());
        notenschnitt = summe / i;
        jLNotenschnitt.setText("Notenschnitt: "
            + fzahl.format(notenschnitt));
        jLNotenzahl.setText("Anzahl eingegebene Noten: "
            + Integer.toString(i));

        if (Double.parseDouble(jTFNote.getText()) > schlechtesteNote) {
        schlechtesteNote = Double.parseDouble(jTFNote.getText());
        jLSchlechtesteNote.setText("schlechteste Note: "
            + Double.toString(schlechtesteNote));
        }
        if (Double.parseDouble(jTFNote.getText()) < besteNote) {
        besteNote = Double.parseDouble(jTFNote.getText());
        jLBesteNote
            .setText("beste Note: " + Double.toString(besteNote));
        }
        if (i == notenzahl) {
        notenschnitt = summe / notenzahl;
        jBtnNoteUebernehmen.setVisible(false);
        jBtnNeu.setVisible(true); 
       // lblNoten.setText("Noten: " );
        jLNoten.setVisible(true);
       
        noten[i] = Double.parseDouble(jTFNote.getText());
        jLNoten.setText(jLNoten.getText() + " " + (noten[i]));
        for(int i=0;i<noten.length;i++){
            if(noten[i]!=null) {
               
               

            }
 
Du könntest das Array direkt unter:
notenzahl = Integer.parseInt(jTFNotenzahl.getText());

erzeugen:
noten = new Double[notenzahl];

Dann einfach die Zeile in jBtnNoteUebernehmenActionPerformed() löschen. Also diese Zeile:
Double [] noten = new Double[notenzahl];


EDIT:
Diese beiden Zeilen stehen noch nicht an der richtigen Stelle:
noten = Double.parseDouble(jTFNote.getText());
jLNoten.setText(jLNoten.getText() + " " + (noten));

die müssten direkt vor:
if (i == notenzahl) {

stehen.
 
EDIT:
Diese beiden Zeilen stehen noch nicht an der richtigen Stelle:
noten = Double.parseDouble(jTFNote.getText());
jLNoten.setText(jLNoten.getText() + " " + (noten));

die müssten direkt vor:
if (i == notenzahl) {

stehen.

Habe ich gemacht, funktioniert aber nicht. Führt zur Fehlermeldung "Type mismatch cannot convert from double to Double []"

füge ich noten "" bei, dann verschwindet die Fehlermeldung, das Ergebnis wird aber nach wie vor nicht wie gewünscht ausgegeben.

Java:
 if (!jTFNote.getText().equals("")
        && Double.parseDouble(jTFNote.getText()) >= 1
        && Double.parseDouble(jTFNote.getText()) <= 6) {
     
        summe = summe + Double.parseDouble(jTFNote.getText());
       
        noten[i-1]=Double.parseDouble(jTFNote.getText());
        notenschnitt = summe / i;
        jLNotenschnitt.setText("Notenschnitt: "
            + fzahl.format(notenschnitt));
        jLNotenzahl.setText("Anzahl eingegebene Noten: "
            + Integer.toString(i));

        if (Double.parseDouble(jTFNote.getText()) > schlechtesteNote) {
        schlechtesteNote = Double.parseDouble(jTFNote.getText());
        jLSchlechtesteNote.setText("schlechteste Note: "
            + Double.toString(schlechtesteNote));
        }
        if (Double.parseDouble(jTFNote.getText()) < besteNote) {
        besteNote = Double.parseDouble(jTFNote.getText());
        jLBesteNote
            .setText("beste Note: " + Double.toString(besteNote));
        }
        noten[i] = Double.parseDouble(jTFNote.getText());
        jLNoten.setText(jLNoten.getText() + " " + (noten[i]));
       
        if (i == notenzahl) {
        notenschnitt = summe / notenzahl;
        jBtnNoteUebernehmen.setVisible(false);
        jBtnNeu.setVisible(true); 
       // lblNoten.setText("Noten: " );
        jLNoten.setVisible(true);
       
     
        for(int i=0;i<noten.length;i++){
           
            //            if(noten[i]!=null) {
                       
            //}
        
        }
 
Ach, die tolle neue Code Vorschau verschluckt Eckige Klammern und macht daraus Italics.
stat dem
Code:
noten[i]
probiermal
Code:
noten[i-1]

EDIT: Also

Code:
noten [i-1] = Double.parseDouble(jTFNote.getText());
jLNoten.setText(jLNoten.getText() + " " + (noten[i-1]));

... wenigstens die [ CODE ] tags funktionieren noch..
 
Hat soweit geklappt!

Beim erweitern des Codes sind allerdings erneut Fehler mit der Array-Ausgabe aufgetreten..
Im Label werden die eingegebenen Noten hintereinander ausgegeben. Versuche ich ein Array allerdings aufzurufen und zu editieren, funktioniert es nicht.
Jedes mal tritt die Fehlermeldung auf... Umstellen von allem von Double auf Int hat nichts gebracht. Weiter unten die entscheidenden Stellen.

kompletter code:

Java:
import java.text.*;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;
import java.util.Arrays;

public class Notenbilanz extends javax.swing.JFrame {
    private JLabel jLabel1;
    private JButton jBtnAnzahlUebernehmen;
    private JLabel jLNote;
    private JButton jBtnNoteUebernehmen;
    private JLabel jLNotenschnitt;
    private JLabel jLSchlechtesteNote;
    private JButton jBtnEnde;
    private JButton jBtnNeu;
    private JLabel jLNotenzahl;
    private JLabel jLBesteNote;
    private JTextField jTFNote;
    private JTextField jTFNotenzahl;
    private JLabel jLNoten;
    public DecimalFormat fzahl;
    public int notenzahl, i, notennummer;
    public double summe, besteNote, schlechtesteNote, notenschnitt;
    private JLabel lblNoten;
    private JTextField tfNotennummer;
    private JLabel  lblNotennummer;
    private JButton btnNotennummer;
    private JButton btnNeuenWertSpeichern;
    private JTextField tfNeuerWert;
    private JLabel lblNeuerWert;
   
   
   
   
  
    public static void fill (Double [] noten, int fromIndex, int toIndex ){
      
    }
 
    public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
        Notenbilanz inst = new Notenbilanz();
        inst.setLocationRelativeTo(null);
        inst.setTitle("Notenliste");
        inst.setVisible(true);
        }
    });
    }

    public Notenbilanz() {
    super();
    initGUI();
    }

    private void initGUI() {
    try {
        setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        getContentPane().setLayout(null);
        this.setPreferredSize(new java.awt.Dimension(408, 253));
        this.setTitle("Notenbilanz");
        {
        fzahl = new DecimalFormat("###,##0.00");
        }
        {
        jLabel1 = new JLabel();
        getContentPane().add(jLabel1);
        jLabel1.setText("Anzahl Noten");
        jLabel1.setBounds(6, 7, 89, 15);
        }
        {
        jTFNotenzahl = new JTextField();
        getContentPane().add(jTFNotenzahl);
        jTFNotenzahl.setBounds(6, 28, 41, 21);
        }
        {
        jBtnAnzahlUebernehmen = new JButton();
        getContentPane().add(jBtnAnzahlUebernehmen);
        jBtnAnzahlUebernehmen.setText("Übernehmen");
        jBtnAnzahlUebernehmen.setBounds(73, 28, 115, 21);
        jBtnAnzahlUebernehmen.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
            jBtnAnzahlUebernehmenActionPerformed(evt);
            }
        });
        }
        {
        jLNote = new JLabel();
        getContentPane().add(jLNote);
        jLNote.setText("1.Note");
        jLNote.setBounds(6, 67, 47, 14);
        jLNote.setVisible(false);
        }
        {
        jTFNote = new JTextField();
        getContentPane().add(jTFNote);
        jTFNote.setBounds(6, 87, 41, 21);
        jTFNote.setVisible(false);
        }
        {
        jLBesteNote = new JLabel();
        getContentPane().add(jLBesteNote);
        jLBesteNote.setBounds(6, 163, 365, 19);
        }
        {
        jLNotenschnitt = new JLabel();
        getContentPane().add(jLNotenschnitt);
        jLNotenschnitt.setBounds(6, 138, 365, 19);
        }
        {
        jLSchlechtesteNote = new JLabel();
        getContentPane().add(jLSchlechtesteNote);
        jLSchlechtesteNote.setBounds(6, 188, 365, 19);
        }
        {
          jLNoten = new JLabel();
          jLNoten.setText("Noten: ");
            getContentPane().add(jLNoten);
            jLNoten.setBounds(6, 206, 385, 19);
            jLNoten.setVisible(false);
        }
        {
        jLNotenzahl = new JLabel();
        getContentPane().add(jLNotenzahl);
        jLNotenzahl.setBounds(6, 118, 374, 14);
        }
        {
        jBtnNeu = new JButton();
        getContentPane().add(jBtnNeu);
        jBtnNeu.setText("Neue Berechnung");
        jBtnNeu.setBounds(240, 28, 140, 21);
        jBtnNeu.setVisible(false);
        jBtnNeu.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
            jBtnNeuActionPerformed(evt);
            }
        });
        }
        {
        jBtnEnde = new JButton();
        jBtnEnde.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        getContentPane().add(jBtnEnde);
        jBtnEnde.setText("Ende");
        jBtnEnde.setBounds(279, 188, 94, 21);
        {
            lblNoten = new JLabel();
            lblNoten.setVisible(false);
            lblNoten.setBounds(186, 209, 147, 16);
            getContentPane().add(lblNoten);
        }
      
        tfNotennummer = new JTextField();
        tfNotennummer.setVisible(false);
        tfNotennummer.setBounds(211, 85, 41, 26);
        getContentPane().add(tfNotennummer);
        tfNotennummer.setColumns(10);
      
        btnNotennummer = new JButton("ok");
        btnNotennummer.setVisible(false);
        btnNotennummer.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
//                lblNeuerWert.setVisible(true);
//                btnNeuenWertSpeichern.setVisible(true);
//                tfNeuerWert.setVisible(true);
               Double [] noten = new Double [notenzahl];
               
                try {
                   
                    notennummer = Integer.parseInt(tfNotennummer.getText()) - 1;    //Array Index startet bei "0";
                   
                    System.out.println(notennummer);
               if ((notennummer >= 0 ) && (notennummer < notenzahl)) {
                  
                   lblNeuerWert.setText(tfNotennummer.getText() +  ". Note");
                   lblNeuerWert.setVisible(true);
                  
                   btnNeuenWertSpeichern.setVisible(true);
                   tfNeuerWert.setVisible(true);
                   tfNeuerWert.setText(String.valueOf(noten[notenzahl]));
                   System.out.println(String.valueOf(noten[notenzahl]));
                   tfNeuerWert.requestFocus();
               } else {
                   JOptionPane.showMessageDialog(null,
                           "Notennummer außerhalb des gültigen Bereichs!"); tfNotennummer.requestFocus();
               }
                }catch (Exception ex)  {
                    JOptionPane.showMessageDialog(null, "ungültiges Zahlenformat!");
               
               
                }
               
            }
        });
        btnNotennummer.setBounds(361, 85, 47, 29);
        getContentPane().add(btnNotennummer);
      
        lblNotennummer = new JLabel(".Note bearbeiten");
        lblNotennummer.setVisible(false);
        lblNotennummer.setBounds(248, 90, 123, 16);
        getContentPane().add(lblNotennummer);
        {
            btnNeuenWertSpeichern = new JButton("speichern");
            btnNeuenWertSpeichern.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                   
                    Double [] noten = new Double [notenzahl];

                    int    notennummer = Integer.parseInt(tfNotennummer.getText()) - 1;
                    
                    try {
                        noten[notennummer] = Double.parseDouble(tfNeuerWert.getText());
                        summe = 0;
                        besteNote = noten[0];
                        schlechtesteNote = noten[0];
                        lblNoten.setText("Noten: ");
                       
                        for (double x : noten) {
                                summe = summe + x;
                                if (besteNote > x) {
                                  besteNote = x;
                                }
                                if (schlechtesteNote < x) {
                                  schlechtesteNote = x;
                        }
                                lblNoten.setText(lblNoten.getText() + " " + x);
                              }
                        notenschnitt = summe / notenzahl;
//                        jLBesteNote.setText("beste Note: " + Double.toString(besteNote));
//                        jLSchlechtesteNote.setText("schlechteste Note: "+ Double.toString(schlechtesteNote));
//                        jLNotenschnitt.setText("Notenschnitt: " + Double.toString(notenschnitt));
                    } catch (Exception ex) {
                        JOptionPane.showMessageDialog(null, "ungültiges Zahlenformat!");   
                       
                    }
                }
            });
            btnNeuenWertSpeichern.setVisible(false);
            btnNeuenWertSpeichern.setBounds(279, 153, 117, 29);
            getContentPane().add(btnNeuenWertSpeichern);
        }
        {
            tfNeuerWert = new JTextField();
            tfNeuerWert.setVisible(false);
            tfNeuerWert.setBounds(227, 156, 41, 26);
            getContentPane().add(tfNeuerWert);
            tfNeuerWert.setColumns(10);
        }
        {
            lblNeuerWert = new JLabel("");
            lblNeuerWert.setVisible(false);
            lblNeuerWert.setBounds(211, 135, 61, 16);
            getContentPane().add(lblNeuerWert);
        }
       
       
       
       
       
       
       
       
       
            jBtnNoteUebernehmen = new JButton();
            getContentPane().add(jBtnNoteUebernehmen);
            jBtnNoteUebernehmen.setText("Übernehmen");
            jBtnNoteUebernehmen.setBounds(73, 87, 115, 21);
            jBtnNoteUebernehmen.setVisible(false);
            jBtnNoteUebernehmen.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent evt) {
                   
                    jBtnNoteUebernehmenActionPerformed(evt);
                   
            

                   
                   
              
               
              
                }
               
               
               
            });
        }
       
       
       
       
       
       
       
       
       
       
       
       
        pack();
    } catch (Exception e) {
        e.printStackTrace();
    }
    }

    private void jBtnAnzahlUebernehmenActionPerformed(ActionEvent evt) {
      
       
      
      
        if (!jTFNotenzahl.getText().equals("")) {
        notenzahl = Integer.parseInt(jTFNotenzahl.getText());
      
        i = 1;
        summe = 0;
        besteNote = 6;
        schlechtesteNote = 0;
        jBtnAnzahlUebernehmen.setVisible(false);
        jTFNotenzahl.setEditable(false);
        jLNote.setVisible(true);
        jTFNote.setVisible(true);
        jBtnNoteUebernehmen.setVisible(true);
        jTFNote.requestFocus();
       
      
    } else {
        JOptionPane.showMessageDialog(null, "Anzahl der Noten eingeben!");
        jTFNotenzahl.requestFocus();
    }
       
    }
  
    private void jBtnNoteUebernehmenActionPerformed(ActionEvent evt) {
       
      
    if (!jTFNote.getText().equals("")
        && Double.parseDouble(jTFNote.getText()) >= 1
        && Double.parseDouble(jTFNote.getText()) <= 6) {
       
        summe = summe + Double.parseDouble(jTFNote.getText());
        Double [] noten = new Double [notenzahl];
      
        noten[i-1]=Double.parseDouble(jTFNote.getText());
        notenschnitt = summe / i;
        jLNotenschnitt.setText("Notenschnitt: "
            + fzahl.format(notenschnitt));
        jLNotenzahl.setText("Anzahl eingegebene Noten: "
            + Integer.toString(i));

        if (Double.parseDouble(jTFNote.getText()) > schlechtesteNote) {
        schlechtesteNote = Double.parseDouble(jTFNote.getText());
        jLSchlechtesteNote.setText("schlechteste Note: "
            + Double.toString(schlechtesteNote));
        }
        if (Double.parseDouble(jTFNote.getText()) < besteNote) {
        besteNote = Double.parseDouble(jTFNote.getText());
        jLBesteNote
            .setText("beste Note: " + Double.toString(besteNote));
        }
        noten [i-1] = Double.parseDouble(jTFNote.getText());
        jLNoten.setText(jLNoten.getText() + " " + (noten[i-1]));
       
       
       
        if (i == notenzahl) {
           
            lblNotennummer.setVisible(true);
            btnNotennummer.setVisible(true);
           
           
        notenschnitt = summe / notenzahl;
      
       
        jBtnNoteUebernehmen.setVisible(false);
        jBtnNeu.setVisible(true);
        jLNoten.setVisible(true);
        tfNotennummer.setVisible(true);
       
       
       

       
      
      
      
        for(int i=0;i<noten.length;i++){
         
       
        }
       
       
       
       
      
        } else {
        i++;
        jLNote.setText(Integer.toString(i) + ".Note");
        jTFNote.setText("");
        jTFNote.requestFocus();
       
        }
    } else {
        JOptionPane.showMessageDialog(null, "gültige Note eingeben!");
        jTFNote.requestFocus();
    }


   
  
    }

    private void jBtnNeuActionPerformed(ActionEvent evt) {
       

    i = 1;
    jLNote.setText(Integer.toString(i) + ".Note");
    summe = 0;
    besteNote = 6;
    schlechtesteNote = 0;
    jBtnAnzahlUebernehmen.setVisible(true);
    jTFNotenzahl.setEditable(true);
    jLNote.setVisible(false);
    jTFNote.setVisible(false);
    jTFNote.setText("");
    jBtnNoteUebernehmen.setVisible(false);
    jTFNotenzahl.setText("");
    jTFNotenzahl.requestFocus();
    jLNotenschnitt.setText("");
    jLBesteNote.setText("");
    jLSchlechtesteNote.setText("");
    jLNotenzahl.setText("");
    jBtnNeu.setVisible(false);
    lblNotennummer.setVisible(false);
    tfNotennummer.setText("1");
    tfNotennummer.setVisible(false);
    btnNotennummer.setVisible(false);
    lblNeuerWert.setVisible(false);
    tfNeuerWert.setVisible(false);
    btnNeuenWertSpeichern.setVisible(false);
  
    }
}


Java:
   btnNotennummer = new JButton("ok");
        btnNotennummer.setVisible(false);
        btnNotennummer.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
//                lblNeuerWert.setVisible(true);
//                btnNeuenWertSpeichern.setVisible(true);
//                tfNeuerWert.setVisible(true);
               Double [] noten = new Double [notenzahl];
               
                try {
                   
                    notennummer = Integer.parseInt(tfNotennummer.getText()) - 1;    //Array Index startet bei "0";
                   
                    System.out.println(notennummer);
               if ((notennummer >= 0 ) && (notennummer < notenzahl)) {
                  
                   lblNeuerWert.setText(tfNotennummer.getText() +  ". Note");
                   lblNeuerWert.setVisible(true);
                  
                   btnNeuenWertSpeichern.setVisible(true);
                   tfNeuerWert.setVisible(true);
                   tfNeuerWert.setText(String.valueOf(noten[notenzahl]));
                   System.out.println(String.valueOf(noten[notenzahl]));
                   tfNeuerWert.requestFocus();
               } else {
                   JOptionPane.showMessageDialog(null,
                           "Notennummer außerhalb des gültigen Bereichs!"); tfNotennummer.requestFocus();
               }
                }catch (Exception ex)  {
                    JOptionPane.showMessageDialog(null, "ungültiges Zahlenformat!");
               
               
                }
               
            }

zum überschreiben bzw. ersetzen

Java:
 btnNeuenWertSpeichern = new JButton("speichern");
            btnNeuenWertSpeichern.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                   
                    Double [] noten = new Double [notenzahl];

                    int    notennummer = Integer.parseInt(tfNotennummer.getText()) - 1;
                    
                    try {
                        noten[notennummer] = Double.parseDouble(tfNeuerWert.getText());
                        summe = 0;
                        besteNote = noten[0];
                        schlechtesteNote = noten[0];
                        lblNoten.setText("Noten: ");
                       
                        for (double x : noten) {
                                summe = summe + x;
                                if (besteNote > x) {
                                  besteNote = x;
                                }
                                if (schlechtesteNote < x) {
                                  schlechtesteNote = x;
                        }
                                lblNoten.setText(lblNoten.getText() + " " + x);
                              }
                        notenschnitt = summe / notenzahl;
//                        jLBesteNote.setText("beste Note: " + Double.toString(besteNote));
//                        jLSchlechtesteNote.setText("schlechteste Note: "+ Double.toString(schlechtesteNote));
//                        jLNotenschnitt.setText("Notenschnitt: " + Double.toString(notenschnitt));
                    } catch (Exception ex) {
                        JOptionPane.showMessageDialog(null, "ungültiges Zahlenformat!");   
                       
                    }
                }
 
Bin jetzt nicht alles durchgegangen. Aber auch hier: Du erzeugst in den actionPerformed Methoden jedesmal ein neues Noten Array. Das kann so nicht funktionieren. Siehe untersten Code: Du parst einmal einen Double in das Array.
Code:
noten[notennummer] = Double.parseDouble(tfNeuerWert.getText());
und hinterher gehst du mit einer for Schleife darüber. Es kann aber immer nur ein! Wert zu den Zeitpunkt darin sein. Ich glaube, du solltest deine Struktur nochmal überdenken...
 
Das Array hat immer den gleichen Namen.. verweist es somit nicht immer auf den Datensatz?
Wenn ich die erzeugten Arrays aus den actionPerformed Methoden nehme, werden die entsprechenden Variablen nicht mehr intialisiert.

Bezüglich globales Array: Habe ich mit er kurzen Beschreibung nicht hinbekommen und auch nicht verstanden. Recherche im Internet hat ergeben, dass es so etwas wie ein globales Array gar nicht gibt.

Java:
noten[notennummer] = Double.parseDouble(tfNeuerWert.getText());
Da geht es um den speichern vom Wert, da ich aber nicht mal die vorher eingegebenen Werte abrufen kann hilft mir das leider nicht weiter. Habe die Passage trotzdem mal überhalb vom "try" geschrieben.

Danke für die bisherige Hilfe.
 
Du kannst auf das Array mit seinem Namen überall in deiner Klasse zugreifen, wenn es als Instanz-Variable erstellt wurde. Das meinte ich mit "Globales Array".
Wo das Array erzeugt wird ist egal. Hauptsache es wird in einer Instanz-Variable abgelegt.
Code:
public class Test
{
  private Double[] einArray; //Variable ist angelegt, aber das Array wurde noch nicht erzeugt

  public void eineMethode()
  {
    einArray = new Double[4]; //Array wird erzeugt. (4 Plätze; alle mit "null" belegt)
  }

  public void eineAndereMethode()
  {
    Double[] einArray = new Double[4]; //Ein Double Array wird erzeugt.(4 Plätze; alle mit "null" belegt). Wenn man es aber so erzeugt, hat man ein neues "lokales" Array erzeugt, das nur innerhalb dieser Methode existiert. Es hat nichts mit dem "globalen" Array zu tun.
    //Wenn dieses Array nicht an andere Stellen übergeben wird, wird es sobald diese Methode abgearbeitet wurde irgendwann vom Garbage Collector abgeräumt.
  }

  public void zugriff()
  {
    einArray[2] = 4.3; //Es kann von überall aus in dieser Klasse auf das "globale" Array zugegriffen werden.
    System.out.println(einArray[4]);
  }
}

Ich hoffe das hilft etwas weiter. Wichtig ist: wenn du mit "... new Irgendwas()" arbeitest wird immer ein neues Objekt erzeugt (das bewirkt das "new"). Egal, ob du es dann in eine lokale Variable packst oder in eine Instanz-Variable (global).

Ob die Begriffe lokal, global(Instanz-Variable) so Standart sind, weiss ich nicht. Wichtig ist, dass es diese Unterschiede gibt. Ich meine das Zauberwort ist: Variablensichtbarkeit.
 

Zurück
Oben