ERLEDIGT
NEIN
NEIN
ANTWORTEN
13
13
ZUGRIFFE
288
288
EMPFEHLEN
-
Hallo,
ich habe zwei Probleme mit der Anwendung.
1. Wenn ich z.B. für die Bildgröße 7.874 und für den Abbildungsmaßstab 0.3028 eingebe erhalte ich für die Gegenstandsweite kein Ergebnis. Es wird nur 0.0 angezeigt.
2. Bei der Berechnung des Abbildungsmaßstabes ändert sich der Wert der Gegenstandsgröße und der Wert wird nicht berechnet.
Kurz gesagt es wird nichts berechnet und die eingegebenen Werte ändern sich.
Woran kann das liegen?
Danke und Gruß
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
import java.awt.*; import javax.swing.*; import javax.swing.JFrame; import java.awt.event.*; public class Abbildungsmaßstab implements ActionListener{ JFrame fr; JTextField text1, text2, text3; JButton ok, lo; String b, g, ß; double gg, bb, ßß, wert; public void setLayout(){ fr = new JFrame(); fr.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); fr.setResizable(false); fr.setLocation(500, 300); fr.setLayout( new GridLayout(4, 2, 20, 5) ); JLabel lable1 = new JLabel("Bildgröße:"); fr.add(lable1); text1 = new JTextField(); text1.setName("b"); text1.addActionListener(this); fr.add(text1); JLabel lable2 = new JLabel("Gegensgröße:"); fr.add(lable2); text2 = new JTextField(); text2.setName("g"); text2.addActionListener(this); fr.add(text2); JLabel lable3 = new JLabel("Abbildungsmaßstab"); fr.add(lable3); text3 = new JTextField(); text3.setName("f"); text3.addActionListener(this); fr.add(text3); ok = new JButton ("Berechnen"); ok.setName("ok"); ok.addActionListener(this); fr.add(ok); lo = new JButton ("Löschen"); lo.setName("lo"); lo.addActionListener(this); fr.add(lo); fr.pack(); fr.setVisible( true ); } public void actionPerformed(ActionEvent event){ if ("Berechnen".equals(event.getActionCommand())){ if (text1.getText().isEmpty() == true && text2.getText().isEmpty() == true && text3.getText().isEmpty() == true){ JDialog dia = new JDialog(fr, "Falsche Eingabe"); dia.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dia.setResizable(false); dia.setLocation(500, 300); dia.setSize(300, 100); dia.setVisible(true); } if (text1.getText().isEmpty() == false && text2.getText().isEmpty() == false && text3.getText().isEmpty() == false){ text1.setText(""); text2.setText(""); text3.setText(""); } // --------- Abbildungsmaßstab ----------- if (text1.getText().isEmpty() == false && text2.getText().isEmpty() == false){ b = text1.getText(); bb = Double.parseDouble(b); g = text2.getText(); gg = Double.parseDouble(g); wert = Optikformeln.calcAbbildungsmaßstab(bb, gg); wert = Math.rint((wert * 100)/100); text3.setText(String.valueOf(wert)); } // --------- Bildgroeße ----------- if (text2.getText().isEmpty() == false && text3.getText().isEmpty() == false){ g = text2.getText(); gg = Double.parseDouble(g); ß = text3.getText(); ßß = Double.parseDouble(ß); wert = Optikformeln.calcBildgroeße(ßß, gg); wert = Math.rint((wert * 100)/100); text1.setText(String.valueOf(wert)); } // ------- Gegenstandsgroeße ---------------- if (text1.getText().isEmpty() == false && text3.getText().isEmpty() == false){ b = text1.getText(); bb = Double.parseDouble(b); ß = text3.getText(); ßß = Double.parseDouble(ß); wert = Optikformeln.calcGegenstandsgroeße(bb, ßß); wert = Math.rint((wert * 100)/100); text2.setText(String.valueOf(wert)); } } if("Löschen".equals(event.getActionCommand())){ text1.setText(""); text2.setText(""); text3.setText(""); } } public static void main(String[] args) { Abbildungsmaßstab ab = new Abbildungsmaßstab(); ab.setLayout(); } }
Klasse mit Formeln (die Formeln der Abbildungsgleichung sollen mit dieser Anwendung nichts zu tun haben)
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
public class Optikformeln { // Abbildungsgleichung // Bildweite static double calcBildweite(double g, double f){ double bildw = (g * f)/(g - f); return bildw; } // Gegenstandsweite static double calcGegenstand(double f, double b){ double gegen = (f * b)/(b - f); return gegen; } // Brennweite static double calcBrenweite(double g, double b){ double brenn = (g * b)/(g + b); return brenn; } // Die Elemente des Abbildungsmaßstabes // Abbildungsmaßstab static double calcAbbildungsmaßstab(double b, double g){ double abb = b/g; return abb; } // Bildgroeße static double calcBildgroeße(double beta, double g){ double bild = beta*g; return bild; } // Gegenstandsgröße static double calcGegenstandsgroeße(double b, double beta){ double g = b/beta; return g; } }Geändert von korona (04.10.11 um 14:14 Uhr)
-
04.10.11 11:42 #2
Moin,
habe den Code jetzt nur überflogen und nicht im Detail analysiert, aber wo werden denn die Inhalte für text1 - text3 eingelesen und gesetzt
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
Hi,
hier sind die Zeilen. Die ersten beiden bekommen den Wert durchdie dritte soll den berechneten Wert in das Textfeld setzen.Code :1
get.Text()
für Abbildungsmaßstab
text1 Zeile = 76
text2 Zeile = 78
text3 Zeile = 82
für Bildgröße
text2 Zeile = 86
text3 Zeile = 88
text1 Zeile = 92
für Gegenstandsgröße
text1 Zeile = 95
text3 Zeile = 97
text2 Zeile = 101
-
04.10.11 12:46 #4
Moin,
oh, nein - da liegst Du falsch !
Mit
wird nur ein Inhalt des Textfeldes text1 ausgelesen.Code java:1
b = text1.getText();
Es muss aber auch zuvor gefüllt werden!
Bspw.:
Code java:1
text1.setText( "Mein Text");
Und ich sehe - wie gesagt - in Deinem Code keine Stellen, an denen diese 3 Felder mit Werten gefüllt werden !
siehe auch hier:
http://download.oracle.com/javase/6/docs/api/
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
Das Textfeld wird doch durch die Benutzereingabe gefüllt.
Ich überprüfe doch sogar in Zeile 61 mit einer if Anweisungen ob die Felder ausgefüllt sind.
In einem nächsem Schrit mit einer weitern if Anweisung z.B. Zeile 75 welche Formel benutzt werden muss.PHP-Code:if (text1.getText().isEmpty() == true && text2.getText().isEmpty() == true && text3.getText().isEmpty() == true)
PHP-Code:if (text1.getText().isEmpty() == false && text2.getText().isEmpty() == false)
-
04.10.11 13:50 #6
Moin,
ah, stimmt - das stehen ja am Ende noch die "setText" ....
Allerdings wird immer nur in ersten IF text3 gefüllt !
Und dies dann so ist, sind die die beiden folgenden Anweisungen immer false !
In welchen Fällen soll denn was gefüllt werden?
Setz' ggf. hinter die Zeilen mit "setText" jeweils in println ...
EDIT:
Was mich auch noch irritiert: da ja initial alle drei Textfelder leer sind, müsstet Du doch den Dialog "Falsche Eingabe" IMMER bekommen, oder ****
Gruß
KlausGeändert von vfl_freak (04.10.11 um 13:52 Uhr) Grund: EDIT
Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
04.10.11 13:56 #7
Hi,
mach doch immer nach deinem Calc-Aufruf mal eine Ausgabe, um das Zwischenergebnis zu überprüfen.
Code java:1 2
wert = Optikformeln.calc...(<parameter>, <parameter>); System.out.println("Wert = " + wert);
Gruß
FabioBitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
Hi,
ich antworte mal rückwärts.
@Fabio
Werde ich mal ausprobieren wobei ich der festen Überzeugung bin das es auf Konsole funktoniert. Vorher hatte ich anstelle von Double Integer (Natürlich keine Eingabe von Kommawertern!) da habe ich eine ArithmeticException bekommen weil ich angeblich durch Null teilen würde. Allerdings war das bei den Abbildungsgleichungen bei den ich übrigens das gleiche Problem habe.
@Klaus
Nein, der Benutzer füllt zwei Felder aus damit ist eine der drei if-Anweisungen (Abbildungsmaßstab, Bildgröße, Gegenstandsgröße) erfüllt.müsstet Du doch den Dialog "Falsche Eingabe" IMMER bekommen, oder ****
Es kommt drauf an welche Felder vom Nutzer augefüllt werden. Wenn die z.B. die Bildgröße bestimmt werden soll füllt der Nutzer die Felde Gegenstandsgröße (text2) und Abbildungsmaßstab (text3) aus und das entsprechend freie Feld wird berechnet und ausgefüllt.Allerdings wird immer nur in ersten IF text3 gefüllt
Nach dem berechnen ist das Programm "Beendet" bzw. der Nutzer drückt auf Löschen und rechnet neu.Und dies dann so ist, sind die die beiden folgenden Anweisungen immer false
GrußGeändert von korona (04.10.11 um 14:57 Uhr)
-
04.10.11 14:46 #9
Also mit Integer-Werten kann es deshalb nicht funktionieren, weil das nur Ganze-Zahlen sind, sprich 1, 2, 3, 4, etc.. Dadurch wird z.B. dein Wert von 0.3617 auf 0 abgerundet. Deshalb sagt das Programm dir dann auch, dass du durch 0 teilen willst, was - wie wir ja alle wissen - nicht geht.
Aber so ohne Zwischenausgabe den Fehler zu finden ist schwer. Ich sehe zumindest keinen.
Und verwende statt Math.rint(...):
Code java:1
double wert = (double) (Math.round(wert*100)/100.0);
Geändert von Fabio Hellmann (04.10.11 um 14:54 Uhr)
Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
So, ich habe das mit System.out.println ausprobiert und es funktioniert.
Es geht wirklich um die Anzeige in den JTextFiel.
Bsp 1
text1 = 1 geteilt durch text2 = 100 wird im Fenster angezeigt Bildgröße 0.0 (vorher 1) und Gegenstandsgröße NaN (vorher 100) das Ergebnis JTextField Abbildungsmaßstab 0.0.
Mit System.out.println funktionierts.
Bsp 2
text2 = 500 mal text3 = 50 wird nichts berechnet. Mit System.out.println funktionierts.
Dazu erhalte ich noch diese Fehlermeldung (sind nur die ersten drei Zeilen)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:989)
at java.lang.Double.parseDouble(Double.java:510)Geändert von korona (04.10.11 um 20:52 Uhr)
-
04.10.11 21:16 #11
Also diese Exception wird ja nur dann geschmissen, wenn eines der Textfelder nicht ausgefüllt ist.
Du solltest bei deiner If-Bedingung vielleicht nicht abfragen .isEmpty(), sondern:
Und das für die anderen eben auch.Code java:1
text1 != null && text1.length() > 0
Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
Hi,
funktioniert nicht es wird mit ein Fehler angezeigt.wird garnicht als Opton für die Textfelder akzeptiert.Code :1
.length()
Gruß
-
05.10.11 20:40 #13
Oh sorry, ich hab es ein wenig falsch bzw. zu kurz geschrieben.
Code java:1 2 3 4
String text = textField.getText(); if(text != null && text.length() > 0) { }
So müsste es richtig sein
Bitte die Code-Tags verwenden. Bei Java-Code: [java]...[/java]
Tutorials:
Automatisches erzeugen eines Inhaltsverzeichnisses (Javascript)
JAnimationPanel - Animationen für Swing/AWT
SWTRatingBar (Bewertungs-Composite) selbst programmieren
____________________________________________________________________________
Über eine Bewertung (Stern links unter dem Beitrag) oder ein Danke freue ich mich sehr.
-
Hab es ausprobiert. Ich bekomme ncoh immer die Exception in thread ... angezeigt.
Habe mit Kommentierung ausprobiert und entdeckt:
Wenn ich die anderen if-Anweisungen auskommentiere dann funktioniert es.Bsp 1
text1 = 1 geteilt durch text2 = 100 wird im Fenster angezeigt Bildgröße 0.0 (vorher 1) und Gegenstandsgröße NaN (vorher 100) das Ergebnis JTextField Abbildungsmaßstab 0.0.
Mit System.out.println funktionierts.
Vieleicht liegt der Feher dann doch auch in den Anweisungen****?
Ähnliche Themen
-
Einstellungen werden nicht übernommen
Von Neuk im Forum PhotoshopAntworten: 2Letzter Beitrag: 09.09.11, 22:46 -
JFace PreferenceDialog Werte werden nicht in PreferenceStore übernommen
Von Another1 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 17.09.08, 20:59 -
Array Werte werden nicht übernommen
Von Assanur im Forum C/C++Antworten: 2Letzter Beitrag: 04.08.08, 12:40 -
VB code läuft aber berechnet die Werte nicht
Von BWL80 im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 17.07.05, 18:15 -
Variablen in URL werden nicht übernommen
Von braindad im Forum PHPAntworten: 3Letzter Beitrag: 11.07.03, 09:33





Zitieren
Login





