Hi,
ich versuch momentan ein Programm zu erstellen welches später einen Pendel simulieren soll (mit Diagrammen usw.). Momentan komme ich leider nicht weiter beim Umwandeln von Strings zu Doubles geht nichts mehr.
Fehler:
(Die Fehlermeldung hab ich gekürzt weil sie extrem lang war, die komplette Fehlermeldung hab ich als Anhang beigefügt)
Der Code:
Main Class:
Konstruktor:
Gui:
und schließlich die Klasse die wahrscheinlich die Fehlermeldung hervorruft:
Diagram1:
Die Fehlermeldung kommt nur wenn ich folgenden Code Teil eingefügt habe:
Sry das ich das ganze Programm mit in den Thread geschrieben habe, aber ich kann an der Stelle wo ich die Strings in Double umwandle keinen Fehler erkennen und befürchte deshalb das ich irgendwo anders der Fehler liegt.
ich versuch momentan ein Programm zu erstellen welches später einen Pendel simulieren soll (mit Diagrammen usw.). Momentan komme ich leider nicht weiter beim Umwandeln von Strings zu Doubles geht nichts mehr.
Fehler:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1008)
at java.lang.Double.parseDouble(Double.java:540)
...
Der Code:
Main Class:
Java:
/**
* @Feuer der Veränderung
* @0.01
*/
class Main
{
/**
* Main MEthode (wird beim Start der .jar Datei aufgerufen).
*/
public static void main(String[] args)
{
Konstruktor neu = new Konstruktor ("Neues Pendel");
neu.pack ();
neu.setSize (800,200);
neu.setVisible (true);
}
}
Java:
//Importiere für Swing Gui nötige Klassen
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//definiere Fensterklasse
public class Konstruktor extends JFrame
{
//deklaiere Variblen
private String g;
private String ymax;
private String m;
private String l;
private String luftdichte;
private String tstart;
private String tend;
private String d;
private TextField tf_g, tf_ymax, tf_m, tf_l, tf_luftdichte, tf_tstart, tf_tend, tf_d;
//Erstellen von ActionListenern zum Erkennen vom klicken auf Buttons und zum Ausführen von Befehlen
class KonstruktorActionListenerBeenden implements ActionListener {
public void actionPerformed (ActionEvent e) {
System.exit (0);
}
}
class KonstruktorActionListenerLaden implements ActionListener {
public void actionPerformed (ActionEvent e) {
}
}
class KonstruktorActionListenerOk implements ActionListener {
public void actionPerformed (ActionEvent e) {
/*
g=Double.parseDouble(tf_g.getText ());
ymax=Double.parseDouble(tf_ymax.getText ());
m=Double.parseDouble(tf_m.getText ());
l=Double.parseDouble(tf_l.getText ());
luftdichte=Double.parseDouble(tf_luftdichte.getText ());
tend=Double.parseDouble(tf_tend.getText ());
tstart=Double.parseDouble(tf_tstart.getText ());
d=Double.parseDouble(tf_d.getText ());*/
Gui maingui = new Gui ("Neues Pendel",g,ymax,m,l,luftdichte,tstart,tend,d);
maingui.pack ();
maingui.setSize (1200,1000);
maingui.setVisible (true);
dispose ();
}
}
//Konstruktor
public Konstruktor (String titel)
{
//behält Fenstertitel
super (titel);
//initialisierung des Layout Managers
setLayout (new GridLayout (5,1));
//Erstellen der Panelle
JPanel erstes =new JPanel ();
erstes.setLayout (new FlowLayout ());
JPanel zweites =new JPanel ();
zweites.setLayout (new FlowLayout ());
JPanel drittes =new JPanel ();
drittes.setLayout (new FlowLayout ());
JPanel viertes =new JPanel ();
viertes.setLayout (new FlowLayout ());
JPanel fuenftes =new JPanel ();
fuenftes.setLayout (new FlowLayout ());
//Erstellen der JTextFields
JTextField tf_g = new JTextField (10);
JTextField tf_ymax = new JTextField (10);
JTextField tf_m = new JTextField (10);
JTextField tf_l = new JTextField (10);
JTextField tf_luftdichte = new JTextField (10);
JTextField tf_tstart = new JTextField (10);
JTextField tf_tend = new JTextField (10);
JTextField tf_d = new JTextField (10);
//Erstellen der Labels
JLabel l_g = new JLabel ("Geben Sie die Gravitation an:");
JLabel l_ymax = new JLabel ("Geben Sie die Starthöhe an:");
JLabel l_m = new JLabel ("Geben Sie die Masse an:");
JLabel l_l = new JLabel ("Geben Sie die Fadenlänge an:");
JLabel l_luftdichte = new JLabel ("Geben Sie die Luftdichte an:");
JLabel l_tstart = new JLabel ("Geben Sie die Startzeit an:");
JLabel l_tend = new JLabel ("Geben Sie an nach wie vielen Sekunden die Simulation endet:");
JLabel l_d = new JLabel ("Geben Sie den Durchmesser des Kugelförmigen Gewichts an:");
//Erstellen der Buttons
JButton b_Ok = new JButton ("Ok");
JButton b_Beenden = new JButton ("Beenden");
JButton b_Laden = new JButton ("Laden");
//Verbinden der JTextFields/Buttons/Labels mit den Panellen
erstes.add (l_g);
erstes.add (tf_g);
erstes.add (l_m);
erstes.add (tf_m);
zweites.add (l_ymax);
zweites.add (tf_ymax);
zweites.add (l_l);
zweites.add (tf_l);
drittes.add (l_luftdichte);
drittes.add (tf_luftdichte);
drittes.add (l_d);
drittes.add (tf_d);
viertes.add (l_tstart);
viertes.add (tf_tstart);
viertes.add (l_tend);
viertes.add (tf_tend);
fuenftes.add (b_Ok);
fuenftes.add (b_Beenden);
fuenftes.add (b_Laden);
//Einfügen der Penele
add (erstes);
add (zweites);
add (drittes);
add (viertes);
add (fuenftes);
//Schließen der Anwendung wenn Fenster schließt
setDefaultCloseOperation (WindowConstants.EXIT_ON_CLOSE);
//Verbinden von Schaltflächen und ActionListener
b_Beenden.addActionListener (new KonstruktorActionListenerBeenden());
b_Ok.addActionListener (new KonstruktorActionListenerOk());
b_Laden.addActionListener (new KonstruktorActionListenerLaden());
}
}
Java:
//Importiere für Swing Gui nötige Klassen
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//definiere Fensterklasse
public class Gui extends JFrame
{
//deklariere Variblen
private String g;
private String ymax;
private String m;
private String l;
private String luftdichte;
private String tstart;
private String tend;
private String d;
//Erstellen von ActionListenern zum Erkennen vom klicken auf Buttons und zum Ausführen von Befehlen
class GuiActionListenerBeenden implements ActionListener {
public void actionPerformed (ActionEvent e) {
System.exit (0);
}
}
//Konstruktor
public Gui (String titel, String newg, String newymax, String newm, String newl, String newluftdichte, String newtstart, String newtend, String newd)
{
//definieren von Variablen
super (titel);
g=newg;
ymax=newymax;
m=newm;
l=newl;
luftdichte=newluftdichte;
tstart=newtstart;
tend=newtend;
d=newd;
//Erstellen der Menüleiste
JMenuBar menubar =new JMenuBar ();
//Erstelle des Menüs
JMenu menue =new JMenu ("Datei...");
//Erstellt Menü Buttons
JMenuItem mb_neu=new JMenuItem ("Neu");
JMenuItem mb_saveas=new JMenuItem ("Speichern als...");
JMenuItem mb_save=new JMenuItem ("Speichern");
JMenuItem mb_laden=new JMenuItem ("Laden...");
JMenuItem mb_beenden=new JMenuItem ("Beenden");
//Hinzufügen der Buttons zur Menü
menue.add (mb_neu);
menue.add (mb_saveas);
menue.add (mb_save);
menue.add (mb_laden);
menue.add (mb_beenden);
//Hinzufügen des Menüs zur Menüleiste
menubar.add (menue);
//Hinzufügen des Menüs zum Fenster
setJMenuBar (menubar);
//Erstelle Layout Manager
setLayout (new FlowLayout ());
//Erstelle Panel
JPanel diagramme=new JPanel ();
//Erstelle Layout Manager vom Panel
diagramme.setLayout (new GridLayout (2,1));
//Erstelle Diagramme
Diagram1 diagram1 = new Diagram1 ();
//Übertrage Werte
diagram1.getInformations (g,ymax,m,l,luftdichte,tstart,tend,d);
//Füge Diagramme zum Panell hinzu
diagramme.add (diagram1);
//Füge Panel ins Fenster ein
add (diagramme);
//Zeichne Diagramme
diagram1.repaint ();
//Verbinden von Schaltflächen und ActionListener
mb_beenden.addActionListener (new GuiActionListenerBeenden());
//Schließen der Anwendung wenn Fenster schließt
setDefaultCloseOperation (WindowConstants.EXIT_ON_CLOSE);
}
}
Diagram1:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Diagram1 extends Canvas
{
//deklariere Variblen
private double g;
private double ymax;
private double m;
private double l;
private double luftdichte;
private double tstart;
private double tend;
private double d;
public Diagram1()
{
//Setze Hintergrundfarbe auf Weiß
setBackground (Color.white);
//Setze Linienfarbe auf schwarz
setForeground (Color.black);
}
//Übertrage Variablen Werte
public void getInformations (String newg, String newymax, String newm, String newl, String newluftdichte, String newtstart, String newtend, String newd) {
g=Double.parseDouble(newg);
ymax=Double.parseDouble(newymax);
m=Double.parseDouble(newm);
l=Double.parseDouble(newl);
luftdichte=Double.parseDouble(newluftdichte);
tstart=Double.parseDouble(newtstart);
tend=Double.parseDouble(newtend);
d=Double.parseDouble(newd);
}
public void paint (Graphics g) {
int xpos, ypos;
double x,y;
String tend1;
//tend1=(new Double (tend).toString ());
g.setColor (Color.black);
g.translate (10,190);
//Zeichne Kordinatensystem
g.drawLine (0,-190,0,10);
g.drawLine (-10,0,290,0);
g.drawLine (0,-190,-10,-180);
g.drawLine (0,-190,10,-180);
g.drawLine (290,0,280,10);
g.drawLine (290,0,280,-10);
g.drawString ("a", 250,-10);
g.drawString ("end m", 20, -170);
for (x=0; x<=290; x+=1) {
g.setColor (Color.red);
y=x/2;
xpos=(int)x;
ypos=-(int)y;
g.drawLine (xpos,ypos,xpos,ypos);
}
}
//Festelegen der Größe
public Dimension getMinimumSize () {
return new Dimension (300,200);
}
public Dimension getPreferredSize () {
return getMinimumSize ();
}
}
Die Fehlermeldung kommt nur wenn ich folgenden Code Teil eingefügt habe:
Java:
g=Double.parseDouble(newg);
ymax=Double.parseDouble(newymax);
m=Double.parseDouble(newm);
l=Double.parseDouble(newl);
luftdichte=Double.parseDouble(newluftdichte);
tstart=Double.parseDouble(newtstart);
tend=Double.parseDouble(newtend);
d=Double.parseDouble(newd);
Sry das ich das ganze Programm mit in den Thread geschrieben habe, aber ich kann an der Stelle wo ich die Strings in Double umwandle keinen Fehler erkennen und befürchte deshalb das ich irgendwo anders der Fehler liegt.
Anhänge
Zuletzt bearbeitet von einem Moderator: