String text [] = new String[10];
double zahl [] = new double[10];
int jahre;
text[1] = tfBetrag.getText();
text[2] = tfJahre.getText();
text[3] = tfZins.getText();
Das funktioniert soweit auch, aber wenn ich den String array nun in den double array umwandeln will funktioniert das ncith obwohl mit mein Java-Editor keine Fehler anzeigt!
Allerdings funktioniert das trotzdem noch nciht. Wenn ich den Button klicke in dem das steht werden mit folgende Fehlermeldungen angezeigt:
Code:
java.lang.NullPointerException
at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:980)
at java.lang.Double.parseDouble(Double.java:220)
at unbenannt2.Frame1.btRechne_actionPerformed(Frame1.java:73)
at unbenannt2.Frame1_btRechne_actionAdapter.actionPerformed(Frame1.java:98)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
Könnt ihr da irgendwas rauslesen?
Ich als Laie nicht!
PS: Ich benutze den Borland JBuilder 2005 Foundation
public void btRechne_actionPerformed(ActionEvent e) {
String text [] = new String[10];
double zahl [] = new double[10];
int jahre;
text[1] = tfBetrag.getText();
text[2] = tfJahre.getText();
text[3] = tfZins.getText();
zahl[0] = Double.parseDouble(text[0]);
for (int i = 1; i<=zahl[2]; i++)
{ if (i<=(zahl[2]/2))
{zahl[1] = zahl[1]*(1+zahl[3]/100);
}
else
{zahl[1] = zahl[1]*(1+zahl[3]/50);
}
taAusgabe.append("Guthaben am Ende des "+i+". Jahres: "+zahl[1]+"\n");
}
}
Also, wenn du nur den String Array in einn Double Array verwandel willst ohne jegliche Berechnung versuch es mal hiermit:
Code:
private String text [] = new String[10]; // String array
private double zahl [] = new double[text.length]; // Array aus Double Werten mit der Länge des String Arrays anlegen
for (int i = 0; i < text.length; i++) { // Zählt von 0 bis zum letzten Element aus text
try {
zahl[i] = Double.parseDouble(text[i]); // Parst
} catch (NumberFormatException e) { // Fängt Fehler ab wenn text nicht in Double geparst werden kann
System.out.println("Txt konnte nicht geparst werden");
}
}
Damit hast du dann alle Srting Werte aus dem Feld text in das Feld Zahlen geparst. Der Try - catch block fängt dabei konvertierungsfehler ab. Mußt du halt sehen ob du den brauchst oder ob du vorher schon abfragst ob die Werte bei der eingabe Double sind..
nein, primitive datentypen können nicht null sein. und wenn du in den stacktrace der exception schaust siehst du, dass die exception in der methode readJavaFormatString() fliegt, wo der string geparst wird, und nicht in der methode von Juuro. Desweiteren steht auch in der Dokumentation, dass eine NullPointerException fliegt, falls der string nicht geparst werden kann.
Also eigentlich funktioniert das parsen schon, denn wenn ich folgendes zum testen schreibe:
Code:
String text [] = new String[10];
double zahl [] = new double[text.length];
int jahre;
text[0] = tfBetrag.getText();
text[1] = tfJahre.getText();
text[2] = tfZins.getText();
for (int i = 0; i<text.length; i++)
{zahl[i] = Double.parseDouble(text[i]);
taAusgabe.append("Zahl"+i+":"+zahl[i]+"\n");
}
Dann wird alles so ausgegeben ich ichs eingegeben hab!
Allrdings kommt trotzden noch dieselbe Fehlermeldung!
Und anscheinend hat der dann Probleme damit mit dem zahl-Array weiter zu arbeiten! :roll:
nein, primitive datentypen können nicht null sein. und wenn du in den stacktrace der exception schaust siehst du, dass die exception in der methode readJavaFormatString() fliegt, wo der string geparst wird, und nicht in der methode von Juuro. Desweiteren steht auch in der Dokumentation, dass eine NullPointerException fliegt, falls der string nicht geparst werden kann.
du hast recht, da war ich wohl zu vorschnell. primitive datentypen sind natürlich nicht null sondern haben per default nen wert. allerdings ist trotzdem ein fehler an selbiger stelle, weil int mit double verglichen wird. ich wusste doch, da ist was faul.
Aha, dankeschön! Also das "null" wird nun zwar nimmer angezeigt aber nun hab ich bei folgendem Quelltext ne andere Fehlermeldung.
Code:
public void btRechne_actionPerformed(ActionEvent e) {
String text [] = new String[3];
double zahl [] = new double[text.length];
text[0] = tfBetrag.getText();
text[1] = tfJahre.getText();
text[2] = tfZins.getText();
for (int i = 0; i<=text.length; i++)
{ zahl[i] = Double.parseDouble(text[i]);
}
for (int i = 1; i<=zahl[1]; i++)
{ if (i<=(zahl[1]/2))
{zahl[0] = zahl[0]*(1+zahl[2]/100);
}
else
{zahl[0] = zahl[0]*(1+zahl[2]/50);
}
taAusgabe.append("Guthaben am Ende des "+i+". Jahres: "+zahl[0]+"\n");
}
}
Fehlermeldung hat gesagt.:
java.lang.ArrayIndexOutOfBoundsException: 3
at unbenannt2.Frame1.btRechne_actionPerformed(Frame1.java:74)
at unbenannt2.Frame1_btRechne_actionAdapter.actionPerformed(Frame1.java:101)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
at java.awt.Component.processMouseEvent(Component.java:5100)
at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Window.dispatchEventImpl(Window.java:1606)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
Ich denke ja, weil ja jedes Textfeld-Objekt auf der Oberfläche andere Positionen erhält.
Unter bestimmten Umständen könnte man das aber sicher auch in einer for-Schleife machen, aber das wäre möglicherwiese aufwändiger, als die Felder des Arrays mit ihrem Index anzusprechen.
TextField tf [] = new TextField[3];
String text [] = new String[tf.length];
double zahl [] = new double[text.length];
taAusgabe.setText("");
for (int i = 0; i>tf.length; i++) {
tf[i] = new TextField();
}
for (int i = 0; i>tf.length; i++) {
text[i] = tf[i].getText();
}