Diskuze: Chytrá proměnná

Java Java Chytrá proměnná

Avatar
vlastajuracka:

Čues lidi chtel bych se zeptat existuje nějaka proměnna ktera si rozezná jestli do ní ukládam double s des. místem nebo int bez des. místa a samo si to podle toho vypíše ?

 
Odpovědět 27.10.2015 20:28
Avatar
sunspinx
Člen
Avatar
sunspinx:

Nechcem byt fakt hnusny, ale nechces si vytvorit jednu temu, kde budes pisat svoje problemy? Nebol by den, ak by si nevytvoril novu temu :D, taktiez pokial sa to chces naucit, tak treba skusat, vediet vyhladat informacie a nie, ze ti kazdy presne vzdy napise, co treba urobit :D.

 
Nahoru Odpovědět  +7 28.10.2015 10:37
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na vlastajuracka
Ondřej Krsička:

var? kámo používej google,( ale můžeš i bing! ;) :D)

 
Nahoru Odpovědět  ±0 28.10.2015 12:28
Avatar
Odpovídá na Ondřej Krsička
Ondřej Štorc:

Až na to že klíčové slovo var v Jave neexistuje...

Editováno 28.10.2015 12:47
Nahoru Odpovědět  +2 28.10.2015 12:47
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Ondřej Krsička
Redaktor
Avatar
 
Nahoru Odpovědět 28.10.2015 13:06
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Ondřej Krsička
Milan Křepelka:

Asi důsledek zdejší skvělé navigace. Tedy někteří říkají že taková je.

 
Nahoru Odpovědět  +2 28.10.2015 14:25
Avatar
mayyyo
Člen
Avatar
mayyyo:

Keď to chceš len vypísať tak ti stačí využiť Object

 
Nahoru Odpovědět 28.10.2015 15:22
Avatar
Inoue Yūki
Redaktor
Avatar
Odpovídá na vlastajuracka
Inoue Yūki:

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ě. :)

Editováno 28.10.2015 15:47
Nahoru Odpovědět  +1 28.10.2015 15:47
Avatar
Richard H.
Redaktor
Avatar
Richard H.:

Ne můzes jedině použít try-catch.

Nahoru Odpovědět  +1 28.10.2015 17:04
Malý užitečný manuál je vždy lepší než bichle k ničemu.
Avatar
Odpovídá na vlastajuracka
Petr Čech (czubehead):

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.

Nahoru Odpovědět  +1 28.10.2015 17:29
Why so serious? -Joker
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

"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.

 
Nahoru Odpovědět 28.10.2015 21:08
Avatar
David Novák
Tým ITnetwork
Avatar
David Novák:

Má Java něco jako union? :D

Nahoru Odpovědět 28.10.2015 21:53
Chyba je mezi klávesnicí a židlí.
Avatar
coells
Redaktor
Avatar
Odpovídá na Milan Křepelka
coells:

Vlastně vymyslel, v R to takhle funguje.

 
Nahoru Odpovědět 28.10.2015 23:23
Avatar
Milan Křepelka
Redaktor
Avatar
Milan Křepelka:

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í"?

 
Nahoru Odpovědět 29.10.2015 6:55
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na vlastajuracka
Jindřich Máca:

Jak psal Petr Čech (czubehead), 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áš. :)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +4 29.10.2015 9:29
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Jindřich Máca
Milan Křepelka:

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

 
Nahoru Odpovědět 29.10.2015 12:01
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Milan Křepelka
Jindřich Máca:

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

Editováno 29.10.2015 12:13
 
Nahoru Odpovědět  +3 29.10.2015 12:11
Avatar
coells
Redaktor
Avatar
Odpovídá na Milan Křepelka
coells:

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.

 
Nahoru Odpovědět  +1 29.10.2015 12:23
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Jindřich Máca
Milan Křepelka:

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.

 
Nahoru Odpovědět  +1 29.10.2015 12:26
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na coells
Milan Křepelka:

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.

 
Nahoru Odpovědět 29.10.2015 12:33
Avatar
Atrament
Člen
Avatar
Atrament:

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é.

 
Nahoru Odpovědět  +1 29.10.2015 12:50
Avatar
coells
Redaktor
Avatar
Odpovídá na Milan Křepelka
coells:

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.

 
Nahoru Odpovědět 29.10.2015 17:04
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na coells
Milan Křepelka:

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.

Editováno 29.10.2015 17:33
 
Nahoru Odpovědět 29.10.2015 17:31
Avatar
coells
Redaktor
Avatar
Odpovídá na Milan Křepelka
coells:

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.

 
Nahoru Odpovědět  +1 29.10.2015 21:26
Avatar
Ondřej Krsička
Redaktor
Avatar
Odpovídá na Milan Křepelka
Ondřej Krsička:

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.

 
Nahoru Odpovědět  ±0 29.10.2015 21:56
Avatar
Milan Křepelka
Redaktor
Avatar
Odpovídá na Ondřej Krsička
Milan Křepelka:

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.##"));
 
Nahoru Odpovědět  +2 30.10.2015 7:07
Avatar
Drahomír Hanák
Tým ITnetwork
Avatar
Odpovídá na Ondřej Krsička
Drahomír Hanák:

Promiň za mínus. Asi jsem na něj nechtěně kliknul na mobilu.

 
Nahoru Odpovědět 30.10.2015 15:47
Avatar
Ondřej Krsička
Redaktor
Avatar
 
Nahoru Odpovědět 30.10.2015 15:50
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 28 zpráv z 28.