# Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null



## fragen1985 (27. Mrz 2011)

Hallo ,

ich schreibe mein erster Gui :lol: und daher keine Größe Erfahrung,

mein Code Lautet


```
package MathematischeRechnungen;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import MathematischeRechnungen.XQuadratBerechnung;

public class MainWindow extends JFrame implements ActionListener {
    
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    public static String zahl1;
    public static String zahl2;
    public static  String zahl3;
    
    static XQuadratBerechnung mainB = new XQuadratBerechnung();
    //public static String[] results;
    
    
    JLabel noThing1 = new JLabel("");
    JLabel noThing2 = new JLabel("");
    JLabel noThing3 = new JLabel("");
    JLabel noThing4 = new JLabel("");
    JLabel x2 = new JLabel(" X² ");
    JLabel x1 = new JLabel(" X ");
    JLabel plus1 = new JLabel("  +  ");
    JLabel plus2 = new JLabel("  +  ");
    JLabel equal = new JLabel("  =  ");

    JTextField x2Zahl = new JTextField();
    JTextField x1Zahl = new JTextField();
    JTextField aZahl = new JTextField();
    JTextField bZahl = new JTextField();

    JButton cal = new JButton("Calculate");

    public MainWindow() {
        // TODO Auto-generated constructor stub
        super(" Calculate Programm ");
        initComponents();
        this.addListeners();
    }
    
    
    private static void resultat() {
        JFrame Result = new JFrame("Result");
        Result.setLayout(new GridLayout(2, 0));
        
        Result.add(new JLabel(" X1 = " + MainWindow.Berechnung()[0]));
        Result.add(new JLabel(" X2 = " + MainWindow.Berechnung()[1]));
                
        Result.setLocation(400, 400);
        Result.setPreferredSize(new Dimension(160, 100)); 
        Result.setVisible(true);
        Result.pack();
    }

    private void initComponents() {

        Container c = this.getContentPane();
        GridBagLayout gbl = new GridBagLayout();
        c.setLayout(gbl);

        // x y w h wx wy
        this.addComponent(c, gbl, new JLabel("" + "Example : X²"), 0, 0, 0, 1,
                1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " + "), 3, 0, 0, 1, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " 4 "), 4, 0, 0, 1, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " X "), 5, 0, 0, 1, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " + "), 6, 0, 0, 1, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " 4 "), 7, 0, 0, 1, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " = "), 8, 0, 0, 1, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " 0 "), 9, 0, 0, 1, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 1, 1, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 2, 1, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 3, 1, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 4, 1, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 5, 1, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 6, 1, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 7, 1, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 8, 1, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 9, 1, 0, 3, 1.0, 1.0);

        this.addComponent(c, gbl, this.x2Zahl, 0, 3, 1, 1, 1.0, 1.0);
        this.x2Zahl.setBorder(BorderFactory.createEtchedBorder());
        this.addComponent(c, gbl, this.noThing2, 1, 3, 1, 1, 1.0, 1.0);
        this.x2.setPreferredSize(new Dimension(5, 5));
        this.addComponent(c, gbl, this.x2, 2, 3, 1, 1, 1.0, 1.0);

        this.addComponent(c, gbl, this.plus1, 3, 3, 1, 1, 1.0, 1.0);
        this.addComponent(c, gbl, this.x1Zahl, 4, 3, 1, 1, 1.0, 1.0);
        this.x1Zahl.setBorder(BorderFactory.createEtchedBorder());
        this.addComponent(c, gbl, this.x1, 5, 3, 1, 1, 1.0, 1.0);
        this.addComponent(c, gbl, this.plus2, 6, 3, 1, 1, 1.0, 1.0);
        this.addComponent(c, gbl, this.aZahl, 7, 3, 1, 1, 1.0, 1.0);
        this.aZahl.setBorder(BorderFactory.createEtchedBorder());
        this.addComponent(c, gbl, this.equal, 8, 3, 1, 1, 1.0, 1.0);
        this.bZahl.setBorder(BorderFactory.createEtchedBorder());
        this.addComponent(c, gbl, this.bZahl, 9, 3, 1, 1, 1.0, 1.0);

        this.addComponent(c, gbl, new JLabel("" + " "), 1, 4, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 2, 4, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 3, 4, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 4, 4, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 5, 4, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 6, 4, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 7, 4, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 8, 4, 0, 2, 1.0, 1.0);
        this.addComponent(c, gbl, new JLabel("" + " "), 9, 4, 0, 3, 1.0, 1.0);
        this.addComponent(c, gbl, this.cal, 1, 20, 8, 1, 1.0, 1.0);

        this.setLocation(255, 255);
        this.setPreferredSize(new Dimension(400, 130)); // hehe, du hast...

        this.setVisible(true);
        this.pack();
    }

    void addComponent(Container cont, GridBagLayout gbl, Component c, int x,
            int y, int width, int height, double weightx, double weighty) {
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.fill = GridBagConstraints.BOTH;
        gbc.gridx = x;
        gbc.gridy = y;
        gbc.gridwidth = width;
        gbc.gridheight = height;
        gbc.weightx = weightx;
        gbc.weighty = weighty;
        gbl.setConstraints(c, gbc);
        cont.add(c);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MainWindow s = new MainWindow();
        

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if (e.getSource().equals(this.x2Zahl)) {
            
            try {
                MainWindow.zahl1 = this.x2Zahl.getSelectedText();

            } catch (NumberFormatException exc) {
                //ignore
            }
        }
        if (e.getSource().equals(this.x1Zahl)) {
            MainWindow.zahl2 = this.x1Zahl.getSelectedText();
        }
        if (e.getSource().equals(this.aZahl)) {
            MainWindow.zahl3 = this.aZahl.getSelectedText();
        }

        if (e.getSource().equals(this.cal)) {
                MainWindow.resultat();
                
            
            
            
        }
    }

    private void addListeners() {
        this.cal.addActionListener(this);
        this.x2Zahl.addActionListener(this);
        this.x1Zahl.addActionListener(this);
        this.aZahl.addActionListener(this);
        this.bZahl.addActionListener(this);
    }

    public static String[] Berechnung(){
        int d = Integer.parseInt(MainWindow.zahl1);
        int c = Integer.parseInt(MainWindow.zahl2);
        int e = Integer.parseInt(MainWindow.zahl3);
        // Test fuer alle Zahlen
        if (
        d == 0 || 
        c == 0 || 
        e == 0) {
            throw new IllegalArgumentException("Bitte Zahlen Angabe kontrollieren");
        }
        
        // dieser Fall ist für x^2 ist nicht 0
        if (
        Integer.parseInt(MainWindow.zahl1) > 1 || 
        Integer.parseInt(MainWindow.zahl1) < 0) {
            
        c = c /d;
            
        e = e / d;
        }
        
        
        int x = - c;
        
        // der Fall fuer x1 < 0
        if (x > 0) {
            for (int i = 1; i <= x; i++) {
                for (int j = 1; j <= i; j++) {
                    if ( i + j == x && i * j == 
        Integer.parseInt(MainWindow.zahl3)) {
                        String[] results = {Integer.toString(i),Integer.toString(j)};
                        return results;
                    }
                }
            }
        }
        
     // der Fall fuer x1 > 0
        if (x < 0) {
            for (int i = 1; i <= -x; i++) {
                for (int j = 1; j <= i; j++) {
                    if ( i + j == -x && i * j == 
        Integer.parseInt(MainWindow.zahl3)) {
                        String[] results = {Integer.toString(-i),Integer.toString(-j)};
                        return results;
                    }
                }
            }
        }
            
        String[] error = {"ERROR"}; 
        return  error;
    }
}
```

Danke :rtfm:


----------



## Haave (27. Mrz 2011)

Wäre schön, wenn du die Zeile angeben könntest, wo der Fehler auftritt.
Selbst ausprobieren kann ich das Programm nicht, weil ich keine Klasse XQuadratBerechnung habe.


----------



## fragen1985 (27. Mrz 2011)

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null
	at java.lang.Integer.parseInt(Unknown Source)
	at java.lang.Integer.parseInt(Unknown Source)
	at MathematischeRechnungen.MainWindow.Berechnung(MainWindow.java:195)
	at MathematischeRechnungen.MainWindow.resultat(MainWindow.java:64)
	at MathematischeRechnungen.MainWindow.actionPerformed(MainWindow.java:178)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


----------



## Haave (27. Mrz 2011)

Dein String zahl1 ist offenbar [c]null[/c].


----------



## fragen1985 (27. Mrz 2011)

wie soll ich das besser machen


----------



## Haave (27. Mrz 2011)

Indem du zum Beispiel Exceptions nicht einfach ignorierst:



fragen1985 hat gesagt.:


> [JAVA=163]try {
> MainWindow.zahl1 = this.x2Zahl.getSelectedText();
> 
> } catch (NumberFormatException exc) {
> ...


Wenn es an dieser Stelle schief geht (und ich kann nur raten, ob es das tut), dann erfährt _niemand_ etwas davon. Schreib doch zumindest

```
exc.printStackTrace();
```
in den catch-Block…

Und überhaupt: Warum sollte das eine NumberFormatException geben? zahl1 ist ein String (wobei es ein sehr unglücklich gewählter Bezeichner ist) und was aus getSelectedText() rauskommt, ist auch ein String…


----------

