Erste Schritte Zahlen einlesen und auswerten

Hallo zusammen,

ich bin sowohl hier komplett neu, als auch bei der Erlernung von Java. Ich habe mir zwei Bücher gekauft, die ich zunächst durcharbeiten will. In dem einen "Programmieren lernen mit Java" Hans Peter Habelitz bin ich gerade in Übung 8 und soll dort ein Programm schreiben, was eine Notenbilanz erstellt. Ich möchte das Programm von ihm aber nicht übernehmen, weil ich sonst nichts lerne. Aktuell bin ich bei einem Problem, was ich mit meinem aktuellen Wissenstand leider nicht lösen kann und hoffe, ihr könnt mir helfen.
Ausgangspunkt:
Ich habe einen Butten ("Übernehmen2"), der mir ein privates void uebernehmen2() ausführen soll.
In uebernehmen2() habe ich mir eine Notenanzahl als Int angelegt, die von der vorherigen Eingabe ausgelesen wird. Der Bediener soll so oft auf den Button "Übernehmen2" klicken können, bis die Notenanzahl erreicht ist.
Dafüür ist denke ich, der Ansatz bis zum while vorerst richtig. Nach jedem Durchlauf der Schleife soll i 1 höher gezählt werden, weshalb ich i++ gemacht habe. Jetzt erkennt das Programm aber schon einmal nicht die beiden lblNotennummer und lbl Notenanzahl, obwohl ich die anderen Frames, die sich in dem GUI befinden auch ansprechen kann (also wie tfNote oder tfAnzNoten). Könnt ihr mir zum Einen sagen, warum der die nicht erkennt und zum anderen einen Hinweis geben, wie ich es mache, dass er die Noten, die jedes Mal eingegeben werden in einer "separaten" Variable ausgibt, damit ich damit weiter rechnen kann?

Als Beispiel habe ich meinen aktuellen Stand mal angehängt.

Danke euch schonmal für eure Hilfe.
LG Markus
Java:
private void uebernehmen2(){
    int notenanzahl = Integer.parseInt(tfAnzNoten.getText());
    int i=0, summe;
    while (i<=notenanzahl){
        summe = Integer.parseInt(tfNote.getText());
       
        //System.out.print(summe);
        tfNote.setText("");
        tfNote.requestFocus();
        i++;
        lblNotennummer.setText(i+1 +". Note");
        lblNotenanzahl.setText(i+1);
       
        break;
 

Frix

Mitglied
Ich würde vermuten, dass du einen Layout Manager verwendest, der in keinem Fall zu wenig Platz hat.

1.
Du kannst mal einen Rahmen hier setzen und schauen, ob das Label an der gewünschten stellen angezeigt wird.

lblNotennummer.setBorder(BorderFactory.createLineBorder(Color.GREEN));
lblNotenanzahl.setBorder(BorderFactory.createLineBorder(Color.GREEN));


2.
Das Label ist "zusammengebrochen". Ich meine damit, dass es keine höhe und keine breite bekommen hat. Auch hier würde der Rahmen erstmal helfen. Spiel mal mit dem Beispiel setPreferredSize() herum. Am Besten du kombinierst beides:

lblNotennummer.setPreferredSize(new Dimension(300, 200));
lblNotennummer.setBorder(BorderFactory.createLineBorder(Color.GREEN));


Tip:
Wenn du setResizable(false); in deinem Quellcode stehen hast, kommentiere es erstmal aus. Ziehe etwas an keinem Fenster und schau dir mal an, wie sich Layout Manager verhalten. Speziell wenn sie keinen Platz zum anzeigen von Komponenten haben.


PS - Zu deinem Post:
Schau dir bitte mal deinen Quellcode Beispiel an. Meine ersten Gedanken waren: "Was ist denn das für ein syntaktischer kauderwelsch".

Technisch Schnitzer:
- Fehlende schließende Klammer in der while Schleife
- ein break ohne Sinn.

- tfNote.setText(""); immer wieder pro Schleifendurchlauf leeren ?!?
- Anfordern von tfNote.requestFocus(); pro Schleifendurchlauf macht kein Sinn. Erst wenn du mit deiner Berechnung fertig bist, dass den Focus anfordern.
- Mit lblNotennummer.setText(i+1 +". Note"); und lblNotenanzahl.setText(i+1); ist es das gleiche.

Faschlische Schnitzer:
- Du hast erwähnt, dass du ein Programm schreiben willst, dass eine Notenbilanz berechnet - Im Quellcode nicht zu erkennen.


Whatever. Ich hatte gerade etwas Langeweile und hab dir mal ein Programm zusammengebaut, dass eine Notenbilanz (Quasi ein paar Noten) zusammenrechnet.

Zum einen hast du dann nochmal ein weiteres Beispiel und ich hab dir gleich noch den Effekt mir den "nicht" sichtbaren Komponenten eingebaut,

Vielleicht hilft es dir weiter.


Grüße
Frix
 

Anhänge

  • Notenbilanz.zip
    8,8 KB · Aufrufe: 3

Viktim

Bekanntes Mitglied
1.) Dein break beended auf jeden Fall schonmal die Schleife nach dem ersten Durchlauf.
Aber wenn ich das richtig verstanden hab, willst du sowieso nichts automatisch hochzählen, sondern so lange auf den Button drücken bis es hochgesetzt wird.
Daher, nimm die schleife und das break einfach raus.

2.)
nach den setText() aufrufen solltest du noch sowas hier machen:
Code:
panel.repaint();
panel.validate();
ich weiß nicht, wie dein Panel heißt, aber das solltest du ganz am Ende einfügen ;)
Das bewirkt das die Änderungen auch angezeigt werden :D
 
Hallo zusammen und danke für die Antworten. Ich habe nur einen Stück vom Quelltext entnommen, weil ich gerade an der Stelle hänge. Ich denke nicht, dass es etwas mit der Größe des Labels zutun hat, da ich das Label in anderen Operationen auch ansprechen kann.
ich habe im Buch ein wenig weiter gelesen und versuche das Problem jetzt einfach mit einem Array. Denn der speichert ja alle Zahlen, die eingegeben werden. Das sollte die Lösung für das Problem sein. Die Frage für mich persönlich wäre nur, wie man sowas ohne Array löst. Also ich habe ein Textfeld, in das eine Zahl eingegeben wird und der Bediener darf so lange Zahlen eingeben und entweder mit Enter oder eben mit dem Button die Zahlen übernehmen, bis die vorgegebene Anzahl erreicht ist. Die eingegebenen Zahl aus jedem Durchlauf soll gespeichert werden, später ausgegeben werden und summiert werden. Aus VBA kenne ich sowas, was aber nicht das Problem wäre, wenn ich die Zahl jedes Mal in eine andere Zelle speichern kann. Das geht ja hier aber nicht. Solltet ihr da noch einen Hinweis haben, bin ich euch dankbar. Ansonsten werde ich hier sicherlich noch ziemlich oft tätig sein. LG Markus
 

Viktim

Bekanntes Mitglied
Also so wie ich das verstanden hab suchst du so ein Programm:
Java:
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Fenster extends JPanel {
  private static final long serialVersionUID = 1L;
  private JTextField textfeld;
  private JButton button;
  private JLabel label;
  private int zuEreichendeZahl = 1000;

  public Fenster() {
    setPreferredSize(new Dimension(400, 100));
    baueKomponenten();
    fuegeVerhaltenHinzu();
    baueFenster();
  }

  private void baueKomponenten() {
    textfeld = new JTextField();
    textfeld.setPreferredSize(new Dimension(100, 30));
    button = new JButton("Speichern");
    label = new JLabel("0");
    label.setPreferredSize(new Dimension(100, 30));
    add(textfeld);
    add(button);
    add(label);
  }

  private void fuegeVerhaltenHinzu() {
    button.addActionListener(e -> {
      uebernehmen();
    });
    textfeld.addKeyListener(new KeyListener() {

      @Override
      public void keyTyped(KeyEvent e) {
      }

      @Override
      public void keyReleased(KeyEvent e) {
      }

      @Override
      public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_ENTER)
          uebernehmen();
      }
    });
  }

  private void uebernehmen() {
    if (textfeld.getText().matches("\\d+")) {
      int text = (Integer.parseInt(label.getText()) + Integer.parseInt(textfeld.getText()));

      if (text >= zuEreichendeZahl) {
        JOptionPane.showMessageDialog(null, "Ziel erreicht!");
        System.exit(0);
      }

      label.setText(String.valueOf(text));
    } else {
      JOptionPane.showMessageDialog(null, "Textfeld beinhaltet keine Zahl!");
      textfeld.setText("");
    }
  }

  private void baueFenster() {
    JFrame frame = new JFrame("Titel");
    frame.add(this);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }

  public static void main(String[] args) {
    new Fenster();
  }

}
 
Hallo Viktim,

wie gesagt, mein erstes Problem war, dass ich die Labels nicht ansprechen konnte. Das Problem habe ich gelöst, indem ich nicht veränderbare Textfelder eingesetzt habe, denn die kann ich ansprechen. ( Also Bsp. lblNote.setText(""); ging nicht, weil er das lblNote nicht erkannt hat. Wenn ich aber tfNote.setText(""); nehme, dann erkennt er das und ich weiß nicht warum.
Wegen Teil 2 der Frage probiere ich gerade noch ein bisschen umher bzw. schau mir erst einmal noch einige Videos an, bevor ich weiter mache.

LG Markus
 

Viktim

Bekanntes Mitglied
wie gesagt, mein erstes Problem war, dass ich die Labels nicht ansprechen konnte. Das Problem habe ich gelöst, indem ich nicht veränderbare Textfelder eingesetzt habe, denn die kann ich ansprechen. ( Also Bsp. lblNote.setText(""); ging nicht, weil er das lblNote nicht erkannt hat. Wenn ich aber tfNote.setText(""); nehme, dann erkennt er das und ich weiß nicht warum.
Geht es denn jetzt?
Wegen Teil 2 der Frage probiere ich gerade noch ein bisschen umher bzw. schau mir erst einmal noch einige Videos an, bevor ich weiter mache.
Was genau ist denn Teil 2?

EDIT: Wäre gut, wenn du mal den ganzen Code Postest.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Einlesen von Zahlen Java Basics - Anfänger-Themen 20
F Zahlen aus Datei einlesen und in Array speichern Java Basics - Anfänger-Themen 2
J Zahlen aus Konsole einlesen Java Basics - Anfänger-Themen 1
A Klassen Zahlen einlesen, an Klasse übergeben und Koordinaten ausgeben Java Basics - Anfänger-Themen 1
B Input/Output Zahlen einlesen Java Basics - Anfänger-Themen 6
L 3 Zahlen einlesen und nach der Größe Sortieren Java Basics - Anfänger-Themen 5
C Input/Output Primzahlenzerlegung -> könnte man Zahlen auch einlesen? Java Basics - Anfänger-Themen 4
K Zahlen einlesen Java Basics - Anfänger-Themen 18
J Zahlen einlesen Java Basics - Anfänger-Themen 3
J Problem mit einfachem einlesen von zahlen/strings Java Basics - Anfänger-Themen 3
J Zahlen und Zeichen einlesen Java Basics - Anfänger-Themen 6
L einlesen von zahlen Java Basics - Anfänger-Themen 7
C zwei Zahlen durch ":" getrennt einlesen Java Basics - Anfänger-Themen 5
K Zahlen nur 4 mal einlesen ! Java Basics - Anfänger-Themen 2
I Zahlen aus .dat einlesen Java Basics - Anfänger-Themen 7
M Einlesen von Zahlen aus Datei Java Basics - Anfänger-Themen 4
P Zahlen aus Datei in Array einlesen Java Basics - Anfänger-Themen 21
MrTical Zahlen einlesen um damit zu rechnen Java Basics - Anfänger-Themen 5
L zahlen in mehrdimensionales array einlesen Java Basics - Anfänger-Themen 3
H Zahlen von Textdatei einlesen Java Basics - Anfänger-Themen 2
N Zahlen einlesen und in umgekehrter Reihenfolge ausgeben Java Basics - Anfänger-Themen 5
K Zahlen über die Kommandozeile einlesen Java Basics - Anfänger-Themen 6
S Zahlen und Strings einlesen Java Basics - Anfänger-Themen 3
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
P Aus Text Datei nur Zahlen übernehmen Java Basics - Anfänger-Themen 13
K Warum werden immer noch doppelte Zahlen ausgegeben ? Java Basics - Anfänger-Themen 13
M negative Zahlen bei Intervallen Java Basics - Anfänger-Themen 10
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
M 3 Zahlen miteinander vergleichen Java Basics - Anfänger-Themen 18
J Taschenrechner mit mehr als 2 Zahlen. Java Basics - Anfänger-Themen 18
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
K Java gleicher Wert von Zahlen? Java Basics - Anfänger-Themen 5
I aus 2 random zahlen soll nur die ungerade summe der beiden genommen werden. Java Basics - Anfänger-Themen 13
J Operatoren Zahlen addieren Java Basics - Anfänger-Themen 13
B Threads Counter mit ungeraden Zahlen Java Basics - Anfänger-Themen 32
JavaBeginner22 Java 2 Zufalls zahlen generieren. Java Basics - Anfänger-Themen 11
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
M Stream mit den ersten n natürlichen Zahlen Java Basics - Anfänger-Themen 4
D Größtes Palindrom Produkt aus zwei dreistelligen Zahlen Java Basics - Anfänger-Themen 60
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
sserio Befreundete Zahlen Java Basics - Anfänger-Themen 7
AhmadSlack Verzweigungen zahlen multiplizieren Java Basics - Anfänger-Themen 4
padde479 Array Multiplikation der ersten n Zahlen Java Basics - Anfänger-Themen 7
U Lotto-Zahlen App Java Basics - Anfänger-Themen 34
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
H Arrays: Größten Zahlen Unterschied herausfinden Java Basics - Anfänger-Themen 20
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
J Zahlen bis zu einem bestimmten Grenzwert ausgeben Java Basics - Anfänger-Themen 11
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
P Zweidimensionales Array als Tabelle mit befüllten Zahlen Java Basics - Anfänger-Themen 10
W Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt? Java Basics - Anfänger-Themen 10
emx-zee Erste Schritte NullPointerException, Array mit zufälligen Zahlen füllen Java Basics - Anfänger-Themen 2
W Bestimmte Zahlen bei Math.random ausschließen? Java Basics - Anfänger-Themen 31
K Erste Schritte "Taschenrechner" zeigt keine Komma Zahlen an. Java Basics - Anfänger-Themen 8
P Drei Zahlen eines Würfelspiels auswerten Java Basics - Anfänger-Themen 7
H Häufigkeit von Zahlen ermitteln Java Basics - Anfänger-Themen 23
sashady Zahlen rekursiv zerlegen und Ziffern addieren Java Basics - Anfänger-Themen 38
H Zahlen kürzen Java Basics - Anfänger-Themen 2
ansystin Teilerfremde Zahlen ausgeben + Zahlenausgabe speichern Java Basics - Anfänger-Themen 3
B Häufigkeit einzelner Zahlen in einem Array Java Basics - Anfänger-Themen 6
nevel Programm für die Summer der Zahlen 1- 1ß Java Basics - Anfänger-Themen 12
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
H Eingegebene Zahlen mit Array ausgeben Java Basics - Anfänger-Themen 18
I 12 Spalten von jeweils 30 Zahlen in Konsole ausgeben Java Basics - Anfänger-Themen 6
R Array mit Unter- und Obergrenze ganze Zahlen dazwischen erscheinen nicht Java Basics - Anfänger-Themen 1
OZAN86 For Schleife von 1-50 die Zahlen werden durch ein Komma getrennt Java Basics - Anfänger-Themen 10
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
mhmt_03 dafür sorgen, dass im JTextfield nur zahlen eingebbar sind Java Basics - Anfänger-Themen 9
Ianatrix Zahlen von a bis b berechnen Java Basics - Anfänger-Themen 7
P Wie kann ich die Zahlen dieses Arrays dividieren? Java Basics - Anfänger-Themen 2
P Nutzer entscheiden lassen, wie viele Zahlen dieser in ein Array eingeben möchte. Java Basics - Anfänger-Themen 6
T Bestimmte Zahlen ausgeben mit einer whilfe Schleife Java Basics - Anfänger-Themen 21
H Alle Geraden zahlen bis 10 ausgeben Java Basics - Anfänger-Themen 11
java3690 Liste mit zufälligen zahlen füllen Java Basics - Anfänger-Themen 27
macle Rekursive String Methode, Gerade Zahlen rausfiltern Java Basics - Anfänger-Themen 10
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
L Mit Zahlen im String rechnen Java Basics - Anfänger-Themen 19
G Java eingelesene Zahlen Java Basics - Anfänger-Themen 2
D Zahlen werden falsch gekürzt :? Java Basics - Anfänger-Themen 27
H Ungerade Zahlen ausgeben von 1 bis 1000 Java Basics - Anfänger-Themen 8
C Positive und negative Zahlen mit Regex extrahieren Java Basics - Anfänger-Themen 8
N Wörter und Zahlen nach speziellen Wörtern ausgeben Java Basics - Anfänger-Themen 11
F Komplexe Zahlen auf verschiedene Weise addieren Java Basics - Anfänger-Themen 18
L Java Int-Array, Zahlen sortieren Java Basics - Anfänger-Themen 8
B Fibonacci Zahlen dynamische Programmierung Java Basics - Anfänger-Themen 7
V Erste Schritte Taschenrechner mit beliebig vielen Zahlen Java Basics - Anfänger-Themen 5
X Wie kann ich Zahlen in einzelne Zifferne zerlegen? Java Basics - Anfänger-Themen 3
J 10 positive Zahlen eingeben Java Basics - Anfänger-Themen 10
K Rechtsbündige Ausgabe von Zahlen Java Basics - Anfänger-Themen 6
A Wie zwei zahlen in einer Variable speichern? Java Basics - Anfänger-Themen 7
M Zahlen erraten Java Basics - Anfänger-Themen 7
E Zahlen von einem Array mit zahlen von zweitem Array vergleichen Java Basics - Anfänger-Themen 27
S Mit nextGaussian() positive Zahlen erzeugen? Java Basics - Anfänger-Themen 39
D auch negative Zahlen sotieren Java Basics - Anfänger-Themen 18
M Warum berechnet mein Primzahlenprog zu hohe Zahlen nicht? Java Basics - Anfänger-Themen 20
W Bell Zahlen Java Basics - Anfänger-Themen 2
H Min und Max von Zahlen Java Basics - Anfänger-Themen 10
der_Schokomuffin Fehler bei Zufallsgeneration von Zahlen Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben