Avatar billede vis_dk Nybegynder
23. oktober 2004 - 18:05 Der er 6 kommentarer og
3 løsninger

Udregne simpelt algebraisk udtryk i string form.

Hej,
Mit problem ligger i at jeg har et algebraisk udtryk i en string. f.eks. String test = "(4+5)*5". Jeg ønsker så at få integer værdien af dette udtryk.

Da java jo sagtens kan regne:
int test = (4+5)*5;

tænkte jeg at det må være muligt at lave String'en om til almindelig java kode og så udregne det, eller lign.

Hvis dette ikke er muligt, findes der så nogle gode java matematik pakker man kan hente gratis?
Avatar billede arne_v Ekspert
23. oktober 2004 - 18:18 #1
Pudsigt du er den anden som spørger om det !

Svaret er at det kan man ike umiddelbart.

Du skal enten finde et passende bibliotek eller selv skrive koden.
Avatar billede japping Nybegynder
23. oktober 2004 - 19:01 #2
Hvis du selv vil skrive kode til udregning af sådanne udtryk, kan jeg fortælle dig, at man i fagsproget kalder det "indlæseprogrammer". En lærer på DTU (Danmarks Tekniske Universitet) har skrevet en bog om dette. Det er lidt langhåret, så forsøg at finde nogle færdige rutiner hvis du kan.
Avatar billede arne_v Ekspert
23. oktober 2004 - 19:12 #3
indlæse programmer må være en fordanskning af parser programs.

Og selvom det selvfølgelig er en form for parsning, så bruger man normalt
ikke klassiske parser teknik (grammatik, EBNF, yacc etc.) til denne
type problem stilling.

En simpel lexikalsk scan og en konvertering af resultatet fra infix
til postfix er nok.
Avatar billede tosssen Nybegynder
23. oktober 2004 - 19:25 #4
http://lts.online.fr/dev/java/math.evaluator/

Denne klasse skulle kunne gøre det du vil have!
Avatar billede vis_dk Nybegynder
24. oktober 2004 - 12:52 #5
I må undskylde hvis der er blevet spurgt om dette før, jeg kunne dog ikke finde det da jeg søgte.

japping -> Jeg går selv på dtu,  hvad hedder professoren? De plejer at være hjælpsomme med ting de interesser sig for :)

arne_v -> Ja, man skal vel lave en form for søgning på parenteser, og finde den inderste først, og så gå ud af.

tosssen -> Det ser godt ud. Det må være hvad jeg søger.
Avatar billede vis_dk Nybegynder
24. oktober 2004 - 12:53 #6
Smid et svar arne, så får i 50 hver :)
Avatar billede arne_v Ekspert
24. oktober 2004 - 13:54 #7
Nej - man konverterer fra infix til postfix, så er der ingen parentser !

(2+2)*(3+3)

bliver til

2 2 + 3 3 + *
Avatar billede arne_v Ekspert
24. oktober 2004 - 13:54 #8
svar
Avatar billede vis_dk Nybegynder
24. oktober 2004 - 15:11 #9
Sådan, tak for hjælpen. Ekstra 50 til arne for et andet spørgsmål.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester