aLeXL Geschrieben 29. Mai 2006 Geschrieben 29. Mai 2006 Hi, habe hier einen ganz einfachen Java Code geschrieben, der eigentlich funktionieren müsste. Es kommt keine Fehlermeldung, allerdings wird der Wert, welcher errechnet wird nicht ins Feld eingetragen. Wisst ihr villeicht, wo der Fehler steckt ? String kz,gz,az,üh; int kz2,gz2,az2,üh2,o1; private void b1ActionPerformed(ActionEvent evt) { System.out.println("b1.actionPerformed, event=" + evt); kz=t1.getText(); gz=t2.getText(); az=t3.getText(); kz2=Integer.valueOf(kz).intValue(); gz2=Integer.valueOf(gz).intValue(); az2=Integer.valueOf(az).intValue(); üh2=(gz2-kz2)-az2; üh=String.valueOf(üh2); t4.setText(üh); Das ist der Ausschnitt aus dem Code, wo der Fehler stecken muss. Ich tippe mal, dass irgendwas mit der umwandlung nicht sitmmt. t1,t2,t3,t4 sind ganz normale Textfelder edit: Habe festgestellt, dass wenn ich die Werte in den Textfeldern von 7.20 auf 7 änder, dann geht es. Ich muss aber mit 7.20 rechnen, nur 7 is zu ungenau Zitieren
Jaraz Geschrieben 29. Mai 2006 Geschrieben 29. Mai 2006 ints sind nun mal nur ganze Zahlen. Nimm double. String in double umwandeln kannst du mit Double.parseDouble(string); Gruß Jaraz Zitieren
aLeXL Geschrieben 29. Mai 2006 Autor Geschrieben 29. Mai 2006 ah, danke =) mit der Umwandlung hab ich immer so meine Probleme. soweit so gut, aber jetzt kommt eine ewig lange Komma Zahl raus ^^ Zitieren
aLeXL Geschrieben 29. Mai 2006 Autor Geschrieben 29. Mai 2006 also momentan folgendes Problem: Ich bekomme eine Zahl, die lässt sich auch Runden, aber das gerundete Ergebnis is viel zu ungenau. Es kommt immer 1.0 oder 2.0 oder 3.0 Ich will aber 1.12 oder 2.12 Zitieren
Klotzkopp Geschrieben 29. Mai 2006 Geschrieben 29. Mai 2006 Das wird dann wohl an deinem Code liegen. Willst du warten, bis ein Forenuser mit Kristallkugel oder anderen hellseherischen Fähigkeiten vorbeischaut, oder zeigst du ihn? Zitieren
Eytibi Geschrieben 29. Mai 2006 Geschrieben 29. Mai 2006 Du solltest beim Runden angeben, auf wieviel Stellen du runden möchtest ... Zitieren
aLeXL Geschrieben 29. Mai 2006 Autor Geschrieben 29. Mai 2006 hehe ok, dann zeig ich euch jetz mal den gesamten quellcode Also ich möchte das dann einfach ausgerechnet haben als 1.20 also zwei Kommastellen und gerundet mit rint. import com.cloudgarden.layout.AnchorConstraint; import com.cloudgarden.layout.AnchorLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.AdjustmentEvent; import java.awt.event.AdjustmentListener; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JSeparator; import javax.swing.JSlider; import javax.swing.JSpinner; import javax.swing.JSplitPane; import javax.swing.JTextField; import javax.swing.JTextPane; import javax.swing.SpinnerListModel; import javax.swing.JMenuItem; import javax.swing.JProgressBar; import javax.swing.JScrollBar; import javax.swing.JMenu; import javax.swing.JMenuBar; /** * This code was edited or generated using CloudGarden's Jigloo * SWT/Swing GUI Builder, which is free for non-commercial * use. If Jigloo is being used commercially (ie, by a corporation, * company or business for any purpose whatever) then you * should purchase a license for each developer using Jigloo. * Please visit www.cloudgarden.com for details. * Use of Jigloo implies acceptance of these licensing terms. * A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR * THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED * LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE. */ public class NewSwingApp extends javax.swing.JFrame { String kz,gz,az,üh; double kz2,gz2,az2,üh2,üh3,o1; private JLabel l1; private JLabel l2; private JTextField t1; private JLabel jLabel4; private JProgressBar p1; private JLabel l6; private JTextField jTextField1; private JLabel l5; private JTextField t4; private JLabel l4; private JButton b1; private JLabel jLabel3; private JLabel jLabel2; private JTextField t3; private JTextField t2; private JLabel l3; private JMenuBar jMenuBar1; /** * Auto-generated main method to display this JFrame */ public static void main(String[] args) { NewSwingApp inst = new NewSwingApp(); inst.setVisible(true); } public NewSwingApp() { super(); initGUI(); } private void initGUI() { try { AnchorLayout thisLayout = new AnchorLayout(); getContentPane().setLayout(thisLayout); this.setTitle("Arbeitszeit - Rechner"); { p1 = new JProgressBar(); getContentPane().add(p1, new AnchorConstraint(872, 983, 955, 822, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); p1.setPreferredSize(new java.awt.Dimension(63, 14)); } { l6 = new JLabel(); getContentPane().add(l6, new AnchorConstraint(748, 1019, 914, 822, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); l6.setText("Feierabend"); l6.setPreferredSize(new java.awt.Dimension(77, 28)); } { l5 = new JLabel(); getContentPane().add(l5, new AnchorConstraint(375, 1019, 541, 697, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); l5.setText("Überstunden Heute"); l5.setPreferredSize(new java.awt.Dimension(126, 28)); } { t4 = new JTextField(); getContentPane().add(t4, new AnchorConstraint(168, 965, 292, 858, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); t4.setPreferredSize(new java.awt.Dimension(42, 21)); t4.setEditable(false); t4.setFocusable(false); } { l4 = new JLabel(); getContentPane().add(l4, new AnchorConstraint(2, 1019, 168, 715, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); l4.setText("Überstunden Total"); l4.setPreferredSize(new java.awt.Dimension(119, 28)); } { b1 = new JButton(); getContentPane().add(b1, new AnchorConstraint(458, 519, 582, 269, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); b1.setText("Berechnen"); b1.setPreferredSize(new java.awt.Dimension(98, 21)); b1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { b1ActionPerformed(evt); } }); } { jLabel4 = new JLabel(); getContentPane().add(jLabel4, new AnchorConstraint(831, 213, 955, 154, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); jLabel4.setText("Std"); jLabel4.setPreferredSize(new java.awt.Dimension(35, 21)); } { jLabel3 = new JLabel(); getContentPane().add(jLabel3, new AnchorConstraint(458, 251, 582, 161, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); jLabel3.setText("Uhr"); jLabel3.setPreferredSize(new java.awt.Dimension(35, 21)); } { t3 = new JTextField(); getContentPane().add(t3, new AnchorConstraint(831, 142, 955, 36, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); t3.setText("8.12"); t3.setPreferredSize(new java.awt.Dimension(63, 21)); } { t2 = new JTextField(); getContentPane().add(t2, new AnchorConstraint(458, 142, 582, 36, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); t2.setText("17.00"); t2.setPreferredSize(new java.awt.Dimension(63, 21)); } { t1 = new JTextField(); getContentPane().add(t1, new AnchorConstraint(127, 142, 251, 36, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); t1.setText("7.20"); t1.setPreferredSize(new java.awt.Dimension(63, 21)); } { l3 = new JLabel(); getContentPane().add(l3, new AnchorConstraint(665, 185, 831, 29, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); l3.setText("Arbeitszeit"); l3.setPreferredSize(new java.awt.Dimension(77, 28)); } { l2 = new JLabel(); getContentPane().add(l2, new AnchorConstraint(334, 185, 458, 29, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); l2.setText("Gehzeit"); l2.setPreferredSize(new java.awt.Dimension(77, 21)); } { l1 = new JLabel(); getContentPane().add(l1, new AnchorConstraint(2, 200, 127, 29, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); l1.setText("Kommzeit"); l1.setPreferredSize(new java.awt.Dimension(84, 21)); } { jLabel2 = new JLabel(); getContentPane().add(jLabel2, new AnchorConstraint(127, 233, 251, 161, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); jLabel2.setText("Uhr"); jLabel2.setPreferredSize(new java.awt.Dimension(28, 21)); } { jTextField1 = new JTextField(); getContentPane().add(jTextField1, new AnchorConstraint(500, 965, 624, 858, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL, AnchorConstraint.ANCHOR_REL)); jTextField1.setEditable(false); jTextField1.setFocusable(false); jTextField1.setPreferredSize(new java.awt.Dimension(42, 21)); } this.setSize(400, 200); { jMenuBar1 = new JMenuBar(); setJMenuBar(jMenuBar1); } } catch (Exception e) { e.printStackTrace(); } } private void b1ActionPerformed(ActionEvent evt) { System.out.println("b1.actionPerformed, event=" + evt); kz=t1.getText(); gz=t2.getText(); az=t3.getText(); kz2=Double.parseDouble(kz); gz2=Double.parseDouble(gz); az2=Double.parseDouble(az); üh2=(Math.rint(gz2-kz2)-az2); üh=String.valueOf(üh2); jTextField1.setText((üh)); } } Zitieren
Klotzkopp Geschrieben 29. Mai 2006 Geschrieben 29. Mai 2006 ']hehe ok' date=' dann zeig ich euch jetz mal den gesamten quellcode [/quote']Ganz toll Die eine Zeile, in der du rundest, vielleicht noch ein wenig drumherum, hätte vollends ausgereicht. Das schließt sich gegenseitig aus. rint rundet zum nächsten Integer hin, unter Bevorzugung gerader Zahlen bei gleichem Abstand. Die übliche Vorgehensweise beim Runden auf zwei Nachkommastellen ist die, mit 100 zu multiplizieren, dann zu runden und wieder durch 100 zu dividieren. Möglicherweise gibt es dafür in Java auch schon eine fertige Funktion. Zitieren
aLeXL Geschrieben 29. Mai 2006 Autor Geschrieben 29. Mai 2006 üh2=(gz2-kz2)-az2; üh3=(Math.rint( üh2 * 100 )) / 100; Geht nicht, es kommt ne ganz lange komma zahl raus Zitieren
Klotzkopp Geschrieben 29. Mai 2006 Geschrieben 29. Mai 2006 ']Geht nicht' date=' es kommt ne ganz lange komma zahl raus[/quote'] Sicher, dass du das richtige ausgibst? Zitieren
aLeXL Geschrieben 29. Mai 2006 Autor Geschrieben 29. Mai 2006 jo, hab eben auf einer homepage die lösung gefunden, funktioniert nun =) mit folgendem code: üh2=(gz2-kz2)-az2; DecimalFormat df = new DecimalFormat( "0.00" ); ühs= df.format( üh2 ); jTextField1.setText((ühs)); Zitieren
Klotzkopp Geschrieben 29. Mai 2006 Geschrieben 29. Mai 2006 ']jo' date=' hab eben auf einer homepage die lösung gefunden, funktioniert nun =)[/quote']Mit Formulierungen wie "die Lösung" solltest du vorsichtig sein, "die Lösung" gibt es selten. Du hast in deinem Code üh2 übrigens nicht gerundet, sondern "nur" formatiert ausgegeben. Wenn du mit dem Wert weiterrechnest, rechnest du nicht mit dem gerundeten Wert. Zitieren
aLeXL Geschrieben 29. Mai 2006 Autor Geschrieben 29. Mai 2006 mh, ok, der muss ja nichtmal gerundet sein, so wie der jetzt ist ist er eigentlich ok. Mal ne andere Frage: Wie kann ich die Systemzeit von dem PC wo das Script ausgeführt wird auslesen, bzw in eine Variable speichern ? Zitieren
Eytibi Geschrieben 29. Mai 2006 Geschrieben 29. Mai 2006 public static void main(String[] args) { String text = "2.518652418512"; double zahl = Double.parseDouble(text); double gerundet = Math.rint(zahl * 100); gerundet = gerundet / 100; System.out.println(gerundet); } Das funktioniert. Bei mir wird "2.52" ausgegeben. Eine vorgefertigte Methode gibt es nicht (zumindest nicht im Math-Objekt. Zitieren
aLeXL Geschrieben 29. Mai 2006 Autor Geschrieben 29. Mai 2006 hm jo, ich kann momentan nirgends finden, wie ich bei Java die Systemzeit auslesen kann. Weiss das jemand? Bei google find ich nichts Zitieren
Klotzkopp Geschrieben 29. Mai 2006 Geschrieben 29. Mai 2006 ']Bei google find ich nichtsDann suchst du falsch. java.util.Date Zitieren
carstenj Geschrieben 29. Mai 2006 Geschrieben 29. Mai 2006 ']hm jo, ich kann momentan nirgends finden, wie ich bei Java die Systemzeit auslesen kann. Weiss das jemand? Bei google find ich nichts Nach was für Begriffen suchst du denn? http://noebis.pi-noe.ac.at/javanuss/node216.html http://www.wer-weiss-was.de/theme35/article1578780.html Und versuche doch einfach mal, bessere Titel zu wählen und nicht mehrere Fragen in einem Thread zu stellen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.