P1,2 : Evaluate Simple Expressions

FaultyBrain
Neuling
Neuling
Beiträge: 7
Registriert: 30. Apr 2015 20:54

P1,2 : Evaluate Simple Expressions

Beitrag von FaultyBrain »

Hello My Dear Friends,

ich habe folgendes Problem: ein Timout im Test für EvaluateSimpleExpressions

Das is so der Kern meiner Methode:

//erstellt neues Element "tmp" identisch zu begin, auf dem operiert wird
IListElement tmp = begin;

while(myList.findMulOrDivOperation() != null && !tmp.next().equals(this.calc.SIGN_PARENTHESIS_CLOSE)) {
tmp = myList.findMulOrDivOperation();
if(tmp.next().equals(this.calc.SIGN_DIV)){
this.calc.div(tmp);
}else if(tmp.next().equals(this.calc.SIGN_MUL)) {
this.calc.mul(tmp);
}

}
while(myList.findAddOrSubOperation() != null && !tmp.next().equals(this.calc.SIGN_PARENTHESIS_CLOSE)) {
tmp = myList.findAddOrSubOperation();
if(tmp.next().equals(this.calc.SIGN_ADD)) {
this.calc.add(tmp);
}else if(tmp.next().equals(calc.SIGN_SUB)) {
this.calc.sub(tmp);
}
}

//überschreibt begin mit data und pointer von "tmp"
begin.setData(tmp.data());
begin.setNext(tmp.next());


der Fehler wird periodisch wechselnd( :?: ) in den fett gedruckten Zeilen angezeigt:

java.lang.Exception: test timed out after 250 milliseconds
at math.MathList.evaluateSimpleExpression(MathList.java:278)
at test.TestTask2.testEvaluateSimpleExpression(TestTask2.java:155)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74)


die Funktionalität der Methoden ist anhand einer Testmethode geprüft, eine Ausgabe hat mir verraten, dass die Operationen (add,mul,...) garnicht ausgeführt werden, OBWOHL myList.findAddOrSubOperation() != null true ist ( :?: )

vielleicht kann mir jemand helfen

FaultyBrain
Neuling
Neuling
Beiträge: 7
Registriert: 30. Apr 2015 20:54

Re: P1,2 : Evaluate Simple Expressions

Beitrag von FaultyBrain »

Dämlich: habe überall .data() vergessen, wenn ich mit "*" "/" "(" usw vergleiche

Lysoland
Erstie
Erstie
Beiträge: 15
Registriert: 27. Apr 2015 22:07

Re: P1,2 : Evaluate Simple Expressions

Beitrag von Lysoland »

Ich denke dein Code wird trotzdem nicht funktionieren, da du anscheinend nicht überprüfst ob du eine Gleitkommazahl hast oder nicht.

sch3rvv1n
Erstie
Erstie
Beiträge: 17
Registriert: 22. Apr 2015 10:58

Re: P1,2 : Evaluate Simple Expressions

Beitrag von sch3rvv1n »

wenn du auch so eine Formel a+(b*c+(d+e))*f+g hast, wird trotzdem nicht funktionieren. Dann wird deine erste Schleife endlos.

Ch.Roy
Neuling
Neuling
Beiträge: 5
Registriert: 25. Apr 2015 20:14

Re: P1,2 : Evaluate Simple Expressions

Beitrag von Ch.Roy »

aber , die Klasse MathList hat nur IntegerCalculator; :oops: wie kann man dann mit dem PointNumberCalculator machen ?

Rapha167
Mausschubser
Mausschubser
Beiträge: 49
Registriert: 30. Apr 2015 19:00

Re: P1,2 : Evaluate Simple Expressions

Beitrag von Rapha167 »

soweit ich das verstanden habe kann kriegt mit in calc den calculator immer mitgeliefert!

Ch.Roy
Neuling
Neuling
Beiträge: 5
Registriert: 25. Apr 2015 20:14

Re: P1,2 : Evaluate Simple Expressions

Beitrag von Ch.Roy »

ehrlich gesagt, verstehe nicht, wie du es meinst :oops: ...

KaeferZuechter
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 108
Registriert: 15. Apr 2015 19:24

Re: P1,2 : Evaluate Simple Expressions

Beitrag von KaeferZuechter »

Ch.Roy hat geschrieben:ehrlich gesagt, verstehe nicht, wie du es meinst :oops: ...

Der Calculator wird von den Tests immer korrekt eingestellt (bspw. via Constructor).
Um diese Dinge musst du dich also nicht kümmern.
IT'S CALLED A FOURIER TRANSFORM WHEN YOU TAKE A NUMBER AND CONVERT IT TO THE BASE SYSTEM WHERE IT WILL HAVE MORE FOURS, THUS MAKING IT "FOURIER". IF YOU PICK THE BASE WHERE IS HAS THE MOST FOURS, THE NUMBER IS SAID TO BE "FOURIEST".

\(1160_8 \rightarrow 624_{10} \rightarrow 440_{12} \rightarrow 4444_5\)

- Zach Weiner -

Benutzeravatar
felicis
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 114
Registriert: 14. Apr 2015 20:25

Re: P1,2 : Evaluate Simple Expressions

Beitrag von felicis »

nur so nebenbei...
Man kann diesen Code vereinfachen:

Code: Alles auswählen

while(myList.findMulOrDivOperation() != null && !tmp.next().equals(this.calc.SIGN_PARENTHESIS_CLOSE)) {
tmp = myList.findMulOrDivOperation();
nämlich so:

Code: Alles auswählen

while(tmp = myList.findMulOrDivOperation()) != null && !tmp.next().equals(this.calc.SIGN_PARENTHESIS_CLOSE)) {
Das geht, da eine Zuweisung immer den zugewiesenen Wert als return hat ;)

felicis

Antworten

Zurück zu „Archiv“