| | |  |  | 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 | 
 | 
 | 
 | 
| | |  |  | 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 |  |  |  319-960-895 | 12.4.2008 12:22 | 
 | 
 | 
 | 
| | |  |  | 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)
 |  |  | 
 | 
 | 
| | |  |  | hmm tak java soubory se kompiluji, a to uz je fakt smula :P 
 ----------
 ..:@]> [link] <[@:..
 (odpovědět)
 |  | | DjH |  |  |  319-960-895 | 12.4.2008 16:42 | 
 | 
 | 
 | 
| | |  |  | 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 | 
 | 
 | 
 | 
| | |  |  | jezis, sory - "... doma *mam*, ale ... ... *vyraz*" (odpovědět)
 |  | | sg11.tk_ | 79.127.172.* | 14.4.2008 15:13 | 
 | 
 | 
 | 
| | |  |  | ==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 | 
 | 
 | 
 | 
| | |  |  | php automaticky pretypovava string <=> integer, ja jen ukazoval vyuziti eval(); =) 
 ----------
 ..:@]> [link] <[@:..
 (odpovědět)
 |  | | DjH |  |  |  319-960-895 | 14.4.2008 15:51 | 
 | 
 | 
 | 
| | |  |  | 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)
 |  |  | 
 | 
 | 
| | |  |  | 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)
 |  |  | 
 | 
 | 
| | |  |  | 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)
 |  |  | 
 | 
 | 
| | |  |  | tedy, abychom byli přesní, je interpretovaná, ale ne tak, jak bychom si přáli :-) 
 ----------
 Get enlightened!
 (odpovědět)
 |  |  | 
 | 
 |