Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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));

}

}

Geschrieben
']hehe ok' date=' dann zeig ich euch jetz mal den gesamten quellcode :)[/quote']Ganz toll :rolleyes:

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.

Geschrieben

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));

Geschrieben
']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.

Geschrieben

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 ?

Geschrieben


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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...