brauche Hilfe zu Java:

  • 3 Antworten
  • Letztes Antwortdatum
R

Rumpel1984

Neues Mitglied
0
Hallo Leute,

ich lerne gerade Java und komme an einer Stelle einfach nicht weiter. Der folgende Code beschreibt ein Programm zur Berechnung von Noten. Dabei werden die eingegebenen Noten in einem Array gespeichert. Zur Kontrolle wird in einem JLabel dann der Inhalt des Array ausgegeben. Wenn ihr das Programm jedoch so ausführt, werdet ihr nach der Übernahme der eingegebenen Notenzahl nur eine Ausgabe bekommen, bei der die ersten Array-Einträge 0.0 sind.

Wieso gibt er mir nicht den Inhalt meines Arrays aus? -> Die entscheidenden Codezeilen sind wohl ab Zeile 180.
Vielen Dank, falls ihr helfen könnt.

Gruß Jan

--------------------------------

Code:
package gui11;

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;

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;
    
   
    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, 142, 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, 142, 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();
			getContentPane().add(jLNoten);
			jLNoten.setBounds(6, 213, 550, 19);
			jLNoten.setVisible(true);
		}
	    {
		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);
		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) {
		System.out.println(i);
		System.out.println(notenzahl);
	    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);
		jLNoten.setText("Noten: ");
		for(int i=0;i<noten.length;i++){
			jLNoten.setText(jLNoten.getText()+ " " + noten[i]);
			System.out.println(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);
    }
}
 
Zuletzt bearbeitet von einem Moderator:
glaubst echt dass sich das jemand antut und den unformatierten code liest um den fehler zu finden ??

sorry sei mir net böse, aber das kannst echt nicht von den usern hier verlangen.
 
Noch ne kleine Ergänzung zu Swordi: Denkst du jemand zählt 180 Zeilen ab um vielleicht einen Fehler zu finden ?
Ausserdem hab ich in deinem Code nix mit Array gesehen(kann passiert sein das ich es übersehen hab (bei der Formatierung kein Wunder))
 
Also ich hab den Code mal zum Spaß ausgeführt, und bei mir funktioniert er!

// edit
Ach so, du meinst die Ausgabe in die Konsole. Erst mal benutzt du die Variable i sowohl als public-Feld, dann aber wieder als Lokale Variable, das macht deinen Code sehr unübersichtlich und wird irgendwann zu Fehlern führen. Aber das ist nicht dein Problem. Dein Problem entsteht in Zeile 188, wo du dein Array deklarierst. Überprüf mal wie du das machst, und warum am Ende nur ein Wert gespeichert wird.
188:
Code:
Double [] noten = new Double [notenzahl];
 

Anhänge

  • noten.jpg
    noten.jpg
    17,1 KB · Aufrufe: 244
Zuletzt bearbeitet:

Ähnliche Themen

4
Antworten
10
Aufrufe
1.081
jogimuc
J
Zurück
Oben Unten