vyraz v jave

HackForum

vyraz v jave#
Zdravim..

Kdyz mam v jave retezec, ktery by byl napr. v takovemto tvaru:

String retezec = "23 / 3 * 4 + (23+2)";

Mohu nejak udelat to, abych ziskal vysledek tohoto vyrazu, kdyz je v retezci?

Dekuji moc
(odpovědět)
Franta | 89.203.134.*12.4.2008 11:49
re: vyraz v jave#
nevim jak v jave, ale v jinych jazycich se pouziva eval(), ja vubec nemam paru co to java je ale jestli je to skriptovaci jazyk, tak by tam eval() melo byt. treba v php:

<?php
$str = "6/3+sqr(25)";
eval("\$i = $str");
echo $i;
?>

melo by vytisknout: 7

----------
..:@]> [link] <[@:..
(odpovědět)
DjH | E-mail | Website | ICQ 319-960-89512.4.2008 12:22
re: vyraz v jave#
Asi te zklamu, ale Java stejne jako dalsi kompilovane jazyky nema nic podobneho funkci eval().
Pokud chces vyslednou hodnotu retezce, budes ho muset rozsekat, z jednotlivych casti vytahnout cisla a pak matematickymi operatory normalne vypocitat vysledek.
Zkus se taky mrknout sem:
[link]



----------
public static void main(String args[]){
 throw new UnsupportedOperationException("Not implemented!");
}


(odpovědět)
pr0ph3t12.4.2008 13:58
re: vyraz v jave#
hmm tak java soubory se kompiluji, a to uz je fakt smula :P

----------
..:@]> [link] <[@:..
(odpovědět)
DjH | E-mail | Website | ICQ 319-960-89512.4.2008 16:42
zklamu...#
Musím tě zklamat, ale kompilátor je jakékoliv zařízení převádějící kód z jednoho jazyku (java) do druhého (bytecode).

Takže má pravdu ;-)

Ucebnici Javy sice doma ma, ale nevenuji se ji - neni cas.

Zazávorkuj vyrazs
String retezec="(23 / 3 * 4 + (23+2))";
a pak pretypuj na Int. Nevím jestli to bude fungovat.
----
Zasloužil bych si čokoládu, strávil sem zbytečné 2 minuty svého života kvůli tobě na googlu, viz [link]
(odpovědět)
sg11.tk_ | 79.127.172.*14.4.2008 15:11
omlufa#
jezis, sory - "... doma *mam*, ale ... ... *vyraz*"
(odpovědět)
sg11.tk_ | 79.127.172.*14.4.2008 15:13
ŘEŠENÍ#
==PHP
//$str="6/3+sqr(25)"; //--fuzked
echo $str=6/3+sqr(25);
//OPRAVDU vytiskne 7
//(ovsem jestli je matematicky vyraz spravny)...

==JAVA
Integer.valueOf(String retezec);
(odpovědět)
sg11.tk_ | 79.127.172.*14.4.2008 15:20
re: ŘEŠENÍ#
php automaticky pretypovava string <=> integer, ja jen ukazoval vyuziti eval(); =)

----------
..:@]> [link] <[@:..
(odpovědět)
DjH | E-mail | Website | ICQ 319-960-89514.4.2008 15:51
re: ŘEŠENÍ#
Asi te zklamu, ale to co jsi napsal je v jeho pripade nepouzitelne. Javovska metoda valueOf nedokaze prevest stringovy vyraz na integer, v pripade ze je ten string cokoliv jineho nez prima znakova reprezentace celeho cisla (tzn. nesmi to obsahovat zadne operatory a podobne). Pokud bys zadal ten jeho string 23 / 3 * 4 + (23+2) tehle metode, tak se celkem vsadim, ze ti to vyhodi vyjimku.

----------
public static void main(String args[]){
 throw new UnsupportedOperationException("Not implemented!");
}


(odpovědět)
pr0ph3t14.4.2008 18:53
re: ŘEŠENÍ#
Omlouvam se za double post. Tedka jsem to zkousel, prevod skutecne skonci vyjimkou, konkretne NumberFormatException.

----------
public static void main(String args[]){
 throw new UnsupportedOperationException("Not implemented!");
}


(odpovědět)
pr0ph3t14.4.2008 18:59
re: ŘEŠENÍ#
samozřejmě to nemůže fungovat tak jednoduše v javě jako v interpretovaných jazycích už ze samotného principu Javy (není interpretovaná), jak už psal pr0ph3t na začátku ...

----------
Get enlightened!
(odpovědět)
mr.Crow | E-mail | Website14.4.2008 19:33
re: ŘEŠENÍ#
tedy, abychom byli přesní, je interpretovaná, ale ne tak, jak bychom si přáli :-)

----------
Get enlightened!
(odpovědět)
mr.Crow | E-mail | Website14.4.2008 19:43

Zpět
 
 
 

 
BBCode