Diskuze: Chytrá proměnná
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 28 zpráv z 28.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Nechcem byt fakt hnusny, ale nechces si vytvorit jednu temu, kde budes pisat svoje problemy? Nebol by den, ak by si nevytvoril novu temu , taktiez pokial sa to chces naucit, tak treba skusat, vediet vyhladat informacie a nie, ze ti kazdy presne vzdy napise, co treba urobit .
var? kámo používej google,( ale můžeš i bing! )
Až na to že klíčové slovo var v Jave neexistuje...
Asi důsledek zdejší skvělé navigace. Tedy někteří říkají že taková je.
Nazdar. Pokud vím, tak nic takového neexistuje. Holt si to budeš muset ošetřit třeba try...catch, ale raději počkej na zkušenější, v Javě pracuju jen minimálně.
Ne můzes jedině použít try-catch.
Můžeš si vytvořit třídu, která by to dělala za tebe. Jen se mi
nepodařila vygooglit implicitní konverze v Javě, takže to asi nejde udělat
bez toho, že bys musel vždy přiřazovat hodnotu metodou. Nevím, jestli ti
někdo poradí, jak to udělat lépe.
A na co to vůbec chceš? To nevypadá jako příliš čisté řešení
čehokoliv.
"a samo si to podle toho vypíše "
Máš to obráceně. Čísla si nevybírají jak budou prezentována. To určuje prezentační vrsvta. Takže až takhle chytrou číselno proměnnou zatím nikdo nevymýšlel.
Má Java něco jako union?
Dobře. Jak to funguje? Na základě nějakého obecného předpisu. Mířím tam, že takovýchto nápadů může být vícero. Jak se to potom "řídí"?
Jak psal Petr Čech, nejednoduší řešení je vytvořit si vlastní třídu. Ta by mohla vypadat nějak takto:
public class SmartVariable {
private double number;
public SmartVariable(double number) {
this.number = number;
}
public double getNumber() {
return number;
}
public void setNumber(double number) {
this.number = number;
}
@Override
public String toString() {
return (number - (int) number == 0) ? Integer.toString((int) number) : Double.toString(number);
}
}
A její použití je potom následující:
public class Main {
public static void main(String[] args) {
SmartVariable test = new SmartVariable(9.0);
System.out.println(test); // Vypíše 9
test.setNumber(9.3);
System.out.println(test); // Vypíše 9.3
}
}
Doufám, že to je to, co hledáš.
Soustřeďujete se na blbosti ... dané tedy blbou základní otázkou. Kde jsou operátory, typové konverze s ostatními čísly. Nejdřív je potřeba přemýšlet o tom číslo používat jako číslo
Kód odpovídá požadavkům v otázce, nic víc nic míň. Pokud bude tazatel potřebovat další funkce, jako např. typovou konverzi, jste více než vítán ji sem dopsat. Jinak je to ale zbytečná práce, která nejspíše ani nedojde svému užitku.
Většinou se to neřídí, protože to řídit nechceš.
Pro typického programátora, který chápe "programovací jazyk" = "C#" nebo "Java" nebo něco podobného, to může vypadat jako pitomá otázka. Ale to nestačí k prohlášení, že takhle chytré proměnné nikdo nevymýšlí.
Existují jazyky, kde motivací není programování, ale řešení problémů. Ty se chovají odlišně a tam to smysl prostě dává. Související operace se pak podřizují sémantice obsahu. Primitivní programy se nakonec dají psát i v Excelu (a to nemluvím o VBS), který chytračí, kde to jde.
Ano, s tím s Tebou souhlasím. Pokud bych měl vyjádřit svoje přesvědčení, tak je to klasické vymýšlení bejkáren na základě toho, že Vlasta neumí formátovat čísla.
V .NETu se to dá vyřešit jedním formátovacím stringem nebo IFormatProviderem. Nepředpokládám, že by tomu v Javě bylo jinak.
Jsem si jistý, že i při programování které řeší problémy vesmíru se řeší formátování čísla pokud se má zobrazit uživateli. Ale jinak pravda, pokud počítač řeší složité algoritmy, tak tam mě jeho prezentaze nezajímá a je nedůležitá a jistě ji řešit nikdo nechce.
Vždyť už jsem ti tu před časem ukazoval jak se formátují čísla pro výstup pomocí DecimalFormater. Tak to použij a nesnaž se vymýšlet 'narovnák na ohejbák' Jak píše Milan Křepelka, o tom jak se číslo zobrazí má rozhodovat presenční vrstva aplikace a ne číslo samotné.
Vlastně je to přesně naopak.
Napíšeš program, který počítá všelijaké složitosti a potřebuješ z toho udělat report pro "uživatele". Jenže to neumíš a tím pádem se v tom nechceš vrtat, ale stále chceš mít něco hezkého, co bys mohl ukazovat. Tyhle jazyky se pak starají o to, aby ses o to nemusel starat. A pokud ti to nevyhovuje, je obvykle jednodušší použít jinou knihovnu, než zkoušet ručně formátovat čísla.
Asi moc často řešíš přespříliš složité problémy a neumíš normálně popsat poměrně jednoduchou věc. Tak to zkusíme ještě jednou. Jak pro takovéto "chytré" proměnné vyřešit to jak je zobrazovat tak ja není v defaultu. Tedy jednou chci třeba zobrazovat čísla bez desetinné tečky, jednou s desetinnou tečkou. Jednou chci číslo zobrazovat s oddělováním tisíců a jednou chci vidět číslo jako měnu v národním formátu.
Tedy se odprostíme od teoretického plkání a zkusíme něco popsat prakticky.
To je stejná lojzovina, na kterou se ptá Vlasta. Zřejmě naformátuješ string a pokusíš se ho někam vložit. Takže google: http://www.dummies.com/…rs-in-r.html
Nikdy jsem to nepotřeboval, protože se o to musí postarat knihovny. Není sranda vkládat číselné hodnoty do grafů. A musí být snadné vložit tabulky a grafy do reportu, když používáš literate programming.
Zabývat se problémem 9.00 vs. 9 mi přijde jako nesmysl a mrhání časem. Jednoduše si najdu nějakou knihovnu na úpravu čísel nebo něco podobného (v HTML je to tuším vestavěné) a jedu.
Hrhání časem je hledání knihovny a programování jakési chytré proměnné. Ve standardních jazycích můžeš na výstupu čísla formátovat dle libosti podle jasně daných specifikací. Ten zdejší pseudoproblém bys v C# vyřešil třeba takto.
Console.WriteLine((0.12m).ToString("0.##"));
Console.WriteLine((10m).ToString("0.##"));
Promiň za mínus. Asi jsem na něj nechtěně kliknul na mobilu.
Zobrazeno 28 zpráv z 28.