| 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) | |
|
|