Einstellbarer Würfel -Problem!

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Einstellbarer Würfel -Problem!

    Ich habe einen Zufallsgenerator erstellt,der eine zufällige Zahl in einem selbst festgelegten Wertebereich ausgeben soll.
    Eclipse zeigt keine Fehler an,jedoch beim Starten erscheint folgende Fehlermeldung:" Exception in thread "main" java.lang.NullPointerException
    at GuiWürfel.<init>(GuiWürfel.java:52)
    at main.main(main.java:5)"

    Ich weiß nicht,wo der Fehler liegt.Benötige Hilfe!
    Danke schonmal im Voraus!

    Quellcode

    1. //Nebenklasse
    2. import java.util.Random;
    3. import java.awt.event.ActionEvent;
    4. import java.awt.event.ActionListener;
    5. import java.awt.event.WindowEvent;
    6. import javax.swing.*;
    7. public class GuiWürfel extends JFrame {
    8. /**
    9. *
    10. */
    11. private static final long serialVersionUID = 1L;
    12. JLabel label;
    13. JTextField min;
    14. JTextField max;
    15. JButton button1;
    16. JPanel panel;
    17. JTextArea ausgabe;
    18. int ergebnis;
    19. {
    20. panel =new JPanel();
    21. label =new JLabel("Geben sie hier den minimalen sowie den maximalen Wert an");
    22. min =new JTextField(5);
    23. max =new JTextField(5);
    24. button1 =new JButton("Würfeln");
    25. add(panel);
    26. panel.add(label);
    27. panel.add(min);
    28. panel.add(max);
    29. panel.add(button1);
    30. EventHandler handler =new EventHandler();
    31. button1.addActionListener(handler);
    32. min.getText();
    33. max.getText();
    34. int z1 = Integer.getInteger(min.getText()); //Hier zeigt Eclipse beim Ausführen der Klasse ein Problem an
    35. int z2 = Integer.getInteger(max.getText());
    36. Random rnd = new Random ();
    37. for(int counter=1; counter<=1;counter++) { //Würfe
    38. ergebnis =z1+rnd.nextInt(z2);
    39. System.out.println(ergebnis);
    40. }
    41. }
    42. private class EventHandler implements ActionListener {
    43. @Override
    44. public void actionPerformed(ActionEvent e) {
    45. JOptionPane.showMessageDialog(null,ergebnis);
    46. }
    47. public void windowClosing(WindowEvent e) {
    48. System.exit(0);
    49. }
    Alles anzeigen



    Quellcode

    1. public class main {
    2. public static void main (String args []) {
    3. GuiWürfel fenster =new GuiWürfel(); //Auch hier wird das Objekt beim Starten als Fehler deklariert
    4. fenster.setSize(500, 250);
    5. fenster.setLocation(200, 100);
    6. fenster.setTitle("Zufallsgenerator Alpha");
    7. fenster.setVisible(true);
    8. }
    9. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Weox ()

  • Moin!

    Dein Problem wird sein, dass

    Quellcode

    1. min.getText()
    einen leeren String oder sogar null zurückgibt.
    Eine Lösung wäre z.B. den Wert in eine temporäre Variable zu speichern und zu prüfen. In fogendem Sinne:

    Quellcode

    1. String minText = min.getText();
    2. int z1 = 0;
    3. if( null != minText && 0 != minText.length()) {
    4. z1 = Integer.getInteger(minText);
    5. }


    Du musst halt generell immer aufpassen, was du in den Variablen drin hast. Wenn du eine NullPointerException bekommst, heißt das in den meisten Fällen, dass du bei der Programmierung eine oder mehrere Prüfungen vergessen hast. ;)

    Viel Erfolg und Grüße!
    Alex
  • Quellcode

    1. import java.util.Random;
    2. import java.awt.event.ActionEvent;
    3. import java.awt.event.ActionListener;
    4. import java.awt.event.WindowEvent;
    5. import javax.swing.*;
    6. public class GuiWürfel extends JFrame {
    7. /**
    8. *
    9. */
    10. private static final long serialVersionUID = 1L;
    11. JLabel label;
    12. JTextField min;
    13. JTextField max;
    14. JButton button1;
    15. JPanel panel;
    16. JTextArea ausgabe;
    17. int ergebnis;
    18. {
    19. panel =new JPanel();
    20. label =new JLabel("Geben sie hier den minimalen sowie den maximalen Wert an");
    21. min =new JTextField(5);
    22. max =new JTextField(5);
    23. button1 =new JButton("Würfeln");
    24. add(panel);
    25. panel.add(label);
    26. panel.add(min);
    27. panel.add(max);
    28. panel.add(button1);
    29. EventHandler handler =new EventHandler();
    30. button1.addActionListener(handler);
    31. String minText =min.getText();
    32. String maxText =max.getText();
    33. int z1;
    34. int z2;
    35. if( null != minText && 0 != minText.length()) {
    36. Random rnd = new Random ();
    37. z1= Integer.getInteger(minText);
    38. z2= Integer.getInteger(maxText);
    39. ergebnis =z1+rnd.nextInt(z1);
    40. System.out.println(ergebnis);
    41. }
    42. }
    43. class EventHandler implements ActionListener {
    44. @Override
    45. public void actionPerformed(ActionEvent e) {
    46. JOptionPane.showMessageDialog(null,ergebnis);
    47. }
    48. }
    49. public void windowClosing(WindowEvent e) {
    50. System.exit(0);
    51. }
    52. }
    Alles anzeigen
  • Hab das jetzt mal so gelöst hoffe ist so gedacht:

    Quellcode

    1. public class GuiWürfel extends JFrame {
    2. /**
    3. *
    4. */
    5. private static final long serialVersionUID = 1L;
    6. JLabel label;
    7. JTextField min;
    8. JTextField max;
    9. JButton button1;
    10. JPanel panel;
    11. JTextArea ausgabe;
    12. int ergebnis;
    13. int z1;
    14. int z2;
    15. {
    16. panel = new JPanel();
    17. label = new JLabel(
    18. "Geben sie hier den minimalen sowie den maximalen Wert an");
    19. min = new JTextField(5);
    20. max = new JTextField(5);
    21. button1 = new JButton("Würfeln");
    22. add(panel);
    23. panel.add(label);
    24. panel.add(min);
    25. panel.add(max);
    26. panel.add(button1);
    27. EventHandler handler = new EventHandler();
    28. button1.addActionListener(handler);
    29. }
    30. class EventHandler implements ActionListener {
    31. @Override
    32. public void actionPerformed(ActionEvent e) {
    33. int z1 = Integer.parseInt(min.getText());
    34. int z2 = Integer.parseInt(max.getText());
    35. Random rnd = new Random();
    36. ergebnis = z1 + rnd.nextInt(z2);
    37. JOptionPane.showMessageDialog(null, ergebnis);
    38. }
    39. }
    40. public void windowClosing(WindowEvent e) {
    41. System.exit(0);
    42. }
    43. }
    Alles anzeigen