Mathematisch parsen, aber mit einer Variablen X !

Status
Nicht offen für weitere Antworten.
Hallo ihr lieben ...

Dank eurer letzten Hilfe bin ich ja zu der Seite gekommen, wo das mit den parsen alles (sehr gut muss man dazu sagen) erklärt wurde.

http://www.java-forum.org/de/viewtopic.php?t=13378&highlight=parsen+von+formeln

Das ganze klappt auch in sofern gut, wenn ich keine Variable x mit ins Spiel nehme, sondern nur z.B. 4*(12*4+5).

Mein Problem ist aber nun, dass ich unbedingt eine Variable mit parsen muss. Ich wollte erst bei den Konstanten eine Konstante X einführen, jedoch wird das ganze ja nur einmal durchgegangen und dann ist die x-Variable immer die gleiche.

Ich hatte auch schon versucht, eine double x zu erstellen, und bevor die eingegebene Formel geparst werden soll, noch vorher mit einer set-methode immer das x zu ändern, denn die Sache ist ja so, dass das x in 0.1er Schritten durchläuft und so immer ein anderes Ergebnis heraus kommt.

Auch das Erweitern des Methodenkopfs, so dass man die Variable x mit übergeben muss, half mir leider nicht weiter.

Hat vielleicht jemand eine Idee, wie ich einen String wie z.B. x*x+2 parsen kann, wobei bei jedem durchgang das x sich ändert..

Wenn jemand hier mein Problem überhaupt versteht, und mir dann noch helfen könnte.. das wäre super :)

Vielen lieben Dank und mit freundlichen Grüßen
EE
 
Mir ist da gerade eine Idee gekommen:

Wäre es nicht möglich, wenn ich einen String habe, z.b. "x*x+2", dass ich mit irgendeinem befehl, alle x ersetzten kann ? Dass wenn z.B. mein x gerade 1.2 ist, dass es für die Berechnungen mit x=1.2 die Formel so aussieht:

1.2*1.2+2

Das wäre doch eine Idee, oder? Dann wird einfach für jedes x eine neue Formel dem parser übergeben !

Hat da vielleicht jemand eine Idee, wie man das programmiertechnisch realisieren kann, oder hat wer eine andere Idee ?

Für Hilfe wäre ich euch sehr verbunden :)

Grüße
EE
 

madboy

Top Contributor
Hi,

so schreiben wir uns wieder :wink:

String#replace(CharSequence target, CharSequence replacement)

also z.B.
Code:
String formel = "x*x+2";
System.out.println(formel.replace("x", "1.2"));

Gruß,
madboy
 
Problem ist nur, dass x ja nicht fest 1.2 ist, sondern von - irgendwas bis + irgendwas läuft.

Ich hab das jetzt mal folgendermaßen gemacht gehabt:

Code:
		public double funktion(double x, String formel){
			double y;
			
			String vorher = "x";
			String nachher = Double.toString(x);			
			
			String newformel = formel.replaceAll(vorher, nachher);
			System.out.println(newformel);
			y = mathalgo(newformel);							
			
			return y;
		}

Wobei mathalgo(String formel) auf die Parsen-Methode s.o. zugreift.

Wenn ich mir den String "newformel" mal ausgeben lasse, sieht das eigentlich ganz gut aus..

Formel: x*x*2

Ausgabe:
-0.5833333333421554*-0.5833333333421554+2
-0.500000000008822*-0.500000000008822+2
-0.41666666667548874*-0.41666666667548874+2
-0.3333333333421554*-0.3333333333421554+2
-0.2500000000088221*-0.2500000000088221+2
-0.1666666666754888*-0.1666666666754888+2
-0.08333333334215547*-0.08333333334215547+2
-8.822137465003266E-12*-8.822137465003266E-12+2

Davor steht natürlich noch mehr .. aber nach dieser Zeile kommt der Fehler:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: An dieser Formel stimmt was nicht
at Berechnungen.split(Berechnungen.java:367)
at Berechnungen.mathalgo(Berechnungen.java:153)
at Berechnungen.funktion(Berechnungen.java:55)
at Zeichnen.graphzeichnen(Zeichnen.java:42)
at GUI.paintComponent(GUI.java:114)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Ich vermute, dass liegt daran, dass da oben dieses E-12 und so drin steht, oder? Aber wie bekomm ich das raus .. oh je oh je :p

Liebe Grüße
und danke mal wieder madboy ;)

EE
 
Ok, wieder ein Schritt näher..

Dieses E-12 usw. am Ende eines eingesetzten x-Werts kommt nicht durchs parsen .. Es wird tatsächlich schon so übergeben ..

Kann ich den Double -8.822137465003266E-12 irgendwie so runden, dass das E-12 rausfliegt ?

Dann würde ich jedesmal, bevor das x ins parsen geht, checken, dass auch nicht so ein E12 hinten dran hängt.

Ist doch möglich, oder? :)

Grüße, EE
 
Hab jetzt versucht, dass x auf die Nachkommastellen zu begrenzen, dass kein E-12 etc mehr entsteht.

Code:
		public double funktion(double x, String formel){
			double y;
			
			String vorher = "x";
			
			NumberFormat formatter = new DecimalFormat("0.000000000000"); 
	                                String nachher = formatter.format(x); 					
			
			String newformel = formel.replaceAll(vorher, nachher);
			
			System.out.println("Neue Formel: "+newformel);
			y = mathalgo(newformel);							
			
			return y;
		}

Die "newformel" : -346,000000000000*-346,000000000000+2

Fehler:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: An dieser Formel stimmt was nicht.

Ich komm nicht mehr weiter :(

LG EE
 
Soo, geht alles :)

Gibt nur ein Problem, wenn man in Zeile 7 noch eine Null mehr ranhängt, aber naja. Sollte passen.

Code:
		public double funktion(double x, String formel){
			double y;
			
			String vorher = "x";
		         
	        double newX = (double) (Math.round( (float)(x* 100000000) )) / 100000000d; 
	        String nachher = Double.toString(newX); 
	        
			String newformel = formel.replaceAll(vorher, nachher);
			
			//System.out.println("Neue Formel: "+newformel);
			y = mathalgo(newformel);							
			
			return y;
		}

Danke an alle Beteiligten :)

Bis bald, EE ;-)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Objekttransformationen - mathematisch Java Basics - Anfänger-Themen 12
C 2 Objekte (mathematisch) vergleichen in der equals Methode Java Basics - Anfänger-Themen 10
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
W Strings und das parsen Java Basics - Anfänger-Themen 8
R String index out of range: -1 beim Datei Parsen Java Basics - Anfänger-Themen 15
K String nach bestimmtem Muster parsen Java Basics - Anfänger-Themen 3
K Datentypen String zu Integer parsen Java Basics - Anfänger-Themen 2
L Jackson JSON parsen Java Basics - Anfänger-Themen 7
7.7GradOst Datentypen Stringeingabe aus z.B. "4,d,<" parsen Java Basics - Anfänger-Themen 7
D InputStream parsen und als Bilddatei abspeichern Java Basics - Anfänger-Themen 1
M JAVA String schnell parsen Java Basics - Anfänger-Themen 14
K Methoden Datum parsen Java Basics - Anfänger-Themen 16
V Java Regex richtig parsen Java Basics - Anfänger-Themen 2
J Rekursives Parsen (ohne Reg Expressions) Java Basics - Anfänger-Themen 8
L Beliebigen Datentypen aus String parsen Java Basics - Anfänger-Themen 6
L Datei aus Multipart parsen und speichern, seltsam codiert? Java Basics - Anfänger-Themen 16
J String aus Json File parsen Java Basics - Anfänger-Themen 6
S Date parsen klappt nicht richtig Java Basics - Anfänger-Themen 3
M Webseiten Parsen Java Basics - Anfänger-Themen 2
M Input/Output Probleme beim Parsen von CSV und TXT Dateien Java Basics - Anfänger-Themen 7
V Umlaute beim Parsen einer HTML Seite Java Basics - Anfänger-Themen 4
P String parsen Java Basics - Anfänger-Themen 5
S fehler beim datum parsen Java Basics - Anfänger-Themen 6
T Klassen CSV datei einlesen und parsen Java Basics - Anfänger-Themen 4
F Methoden Termin parsen Java Basics - Anfänger-Themen 2
Luk10 String (Hexadezimal) zu int parsen Java Basics - Anfänger-Themen 12
O Nicht Standard Form boolesche Funktion in Standard Form parsen Java Basics - Anfänger-Themen 3
E Datentypen Unvollständiges Datum parsen Java Basics - Anfänger-Themen 8
U Website parsen Java Basics - Anfänger-Themen 11
D Java - OutOfMemoryError beim Parsen Java Basics - Anfänger-Themen 15
J String zu Double parsen (multiple points) Java Basics - Anfänger-Themen 2
K Fehlerbehandlung beim Parsen von Strings Java Basics - Anfänger-Themen 9
F Datum AM / PM parsen Java Basics - Anfänger-Themen 5
A Datentypen Datum mit "May" zu Date parsen Java Basics - Anfänger-Themen 6
F Datum parsen Java Basics - Anfänger-Themen 6
R Datumsformatierung parsen Java Basics - Anfänger-Themen 8
E Code parsen/ formatieren Java Basics - Anfänger-Themen 3
G String parsen Java Basics - Anfänger-Themen 3
J int Wert mit getter holen und in String parsen Java Basics - Anfänger-Themen 5
trash Double Parsen? Java Basics - Anfänger-Themen 3
M Datum parsen Java Basics - Anfänger-Themen 10
A Parsen von double zu int? Java Basics - Anfänger-Themen 2
L String zu Enum parsen Java Basics - Anfänger-Themen 8
L String zuverlässig nach Char parsen? Java Basics - Anfänger-Themen 4
S String KeyEvent parsen Java Basics - Anfänger-Themen 2
D Datum parsen Java Basics - Anfänger-Themen 11
H XML Parsen Java Basics - Anfänger-Themen 7
J HTML mit XPath parsen Java Basics - Anfänger-Themen 7
H Gleichung parsen Java Basics - Anfänger-Themen 10
Spin SAX parsen ..XML not found Java Basics - Anfänger-Themen 2
W String zu Calendar parsen Java Basics - Anfänger-Themen 4
S String Parsen Java Basics - Anfänger-Themen 3
T Zeitwerte parsen Java Basics - Anfänger-Themen 6
J Scanner - Zeile parsen Java Basics - Anfänger-Themen 8
S String parsen Java Basics - Anfänger-Themen 17
W Char in String parsen Java Basics - Anfänger-Themen 6
E Wochentag String parsen Java Basics - Anfänger-Themen 2
S Ascii Datei parsen Java Basics - Anfänger-Themen 2
bugmenot args parsen Java Basics - Anfänger-Themen 3
G Swing xml parsen - Office Java Basics - Anfänger-Themen 8
M Bilder "parsen" Java Basics - Anfänger-Themen 5
G String parsen Java Basics - Anfänger-Themen 7
G Char Wert in Int Wert parsen Java Basics - Anfänger-Themen 10
P HTML parsen Java Basics - Anfänger-Themen 2
K Objekte zurück parsen Java Basics - Anfänger-Themen 2
D xml parsen mit Java Java Basics - Anfänger-Themen 5
G Vector Strijng parsen Java Basics - Anfänger-Themen 6
G Url parsen? Java Basics - Anfänger-Themen 3
H parsen Java Basics - Anfänger-Themen 24
M probleme beim parsen Java Basics - Anfänger-Themen 7
T Beim XML-Parsen Text einlesen Java Basics - Anfänger-Themen 5
C parsen Java Basics - Anfänger-Themen 2
G Parsen eines Strings Java Basics - Anfänger-Themen 4
M Object[] parsen Java Basics - Anfänger-Themen 9
N Int parsen Java Basics - Anfänger-Themen 3
D Array Parsen Java Basics - Anfänger-Themen 4
N Datum parsen Java Basics - Anfänger-Themen 3
P Datei mit Strings parsen Java Basics - Anfänger-Themen 4
M Html Parsen / Values von Hidden Fields auslesen Java Basics - Anfänger-Themen 10
W html parsen Java Basics - Anfänger-Themen 2
K Tokens in Integer parsen Java Basics - Anfänger-Themen 2
D HTML-Datei einlesen/parsen Java Basics - Anfänger-Themen 9
J java script mit java parsen Java Basics - Anfänger-Themen 6
G parsen von double zu int Java Basics - Anfänger-Themen 4
RaoulDuke java.util.Date parsen Java Basics - Anfänger-Themen 5
B Problem beim XML-Parsen Java Basics - Anfänger-Themen 10
G Parsen des Datums nicht möglich! Wer kann helfen? Java Basics - Anfänger-Themen 7
M.C.S. String parsen in Java Java Basics - Anfänger-Themen 5
T Parsen einer Datei? Java Basics - Anfänger-Themen 3
R Website mit Java parsen Java Basics - Anfänger-Themen 4
S String nach boolean parsen! Java Basics - Anfänger-Themen 5
M regulärer Ausdruck zum Parsen einer E-Mail Signatur Java Basics - Anfänger-Themen 16
C Text mit Trennzeichen parsen (Bsp. Ich/esse/heute/Eis) Java Basics - Anfänger-Themen 9
A Parsen einer XML-Datei: Wo sind meine Start-Tags??? Java Basics - Anfänger-Themen 22
A erste Schritte auf dem Weg eine XML-Datei zu parsen Java Basics - Anfänger-Themen 2
F Kommandozeile parsen Java Basics - Anfänger-Themen 6
T XML Parsen und Inhalt in ein Byte Array schreiben Java Basics - Anfänger-Themen 3
P String zu Date bei jedem Tastendruck parsen Java Basics - Anfänger-Themen 3
V logfile parsen Java Basics - Anfänger-Themen 7
D HTML Code einlesen und nach Links parsen Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben