Geek tričko zdarma Geek tričko zdarma
Hledáme grafika na pohodovou brigádu v Blenderu nebo programátora na hry v PyGame. Máš zájem? Napiš nám na redakce [zavináč] itnetwork.cz!
Tričko zdarma! Stačí před dobitím bodů použít kód TRIKO15. Více informací zde

Lekce 4 - Typový systém podruhé: Datové typy

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci Java kurzu, Proměnné, typový systém a parsování, jsme si ukázali základní datové typy, byly to int, String a float. Nyní se na datové typy podíváme více zblízka a vysvětlíme si, kdy jaký použít. Dnešní lekce bude hodně teoretická, ale o to více bude praktická ta příští. Na konci si vytvoříme pár jednoduchých ukázek.

Java rozeznává dva druhy datových typů, primitivní a referenční.

Primitivní datové typy

Proměnné primitivního datového typu si dokážeme jednoduše představit. Může se jednat např. o číslo nebo znak. V paměti je jednoduše uložena přímo hodnota a my k této hodnotě můžeme z programu přímo přistupovat. Slovo přímo jsem tolikrát nepoužil jen náhodou. V této sekci tutoriálů se budeme věnovat výhradně těmto proměnným.

Celočíselné datové typy

Podívejme se nyní na tabulku všech vestavěných celočíselných datových typů v Javě, všimněte si typu int, který již známe zminule.

Datový typ Rozsah Velikost
byte -128 až 127 8 bitů
short -32 768 až 32 767 16 bitů
int -2 147 483 648 až 2 147 483 647 32 bitů
long -9 223 372 036 854 775 808 až 9 223 372 036 854 775 807 64 bitů

Asi vás napadá otázka, proč máme tolik možných typů pro uložení čísla. Odpověď je prostá, záleží na jeho velikosti. Čím větší číslo, tím více spotřebuje paměti. Pro věk uživatele tedy zvolíme byte, protože se jistě nedožije více, než 127 let. Představte si databázi milionu uživatelů nějakého systému, když zvolíme místo byte int, bude zabírat 4x více místa. Naopak když budeme mít funkci k výpočtu faktoriálu, stěží nám bude stačit rozsah intu a použijeme long.

Nad výběrem datového typu nemusíte moc přemýšlet a většinou se používá jednoduše int. Typ řešte pouze v případě, když jsou proměnné v nějakém poli (obecně kolekci) a je jich tedy více, potom se vyplatí zabývat se paměťovými nároky. Tabulky sem dávám spíše pro úplnost. Mezi typy samozřejmě funguje již zmíněná implicitní konverze, tedy můžeme přímo přiřadit int do proměnné typu long a podobně, aniž bychom něco konvertovali.

Desetinná čísla

U desetinných čísel je situace poněkud jednodušší, máme na výběr pouze dva datové typy. Samozřejmě se liší opět v rozsahu hodnoty, dále však ještě v přesnosti (vlastně počtu des. míst). Double má již dle názvu dvojnásobnou přesnost oproti float.

Datový typ Rozsah Přesnost
float +-1.5 * 10−45 až +-3.4 * 1038 7 čísel
double +-5.0 * 10−324 až +-1.7 * 10308 15-16 čísel

Pozor, vzhledem k tomu, že desetinná čísla jsou v počítači uložena ve dvojkové soustavě, dochází k určité ztrátě přesnosti. Odchylka je sice téměr zanedbatelná, nicméně když budete programovat např. finanční systém, nepoužívejte tyto dat. typy pro uchování peněz, mohlo by dojít k malým odchylkám.

Když do floatu chceme dosadit přímo ve zdrojovém kódu, musíme použít sufix F, u double sufix D (u double ho můžeme vypustit, jelikož je výchozí desetinný typ):

float f = 3.14F;
double d = 2.72;

Jako desetinný separátor používáme ve zdrojovém kódu vždy tečku, nehledě na to, jaké máme v operačním systému regionální nastavení.

Další vestavěné datové typy

Podívejme se na další datové typy, které nám Java nabízí:

Datový typ Rozsah Velikost/Přesnost
char U+0000 až U+ffff 16 bitů
boolean true nebo false 8 bitů
Char

Char nám reprezentuje jeden znak, narozdíl od Stringu, který reprezentoval celý řetězec charů. Znaky v Javě píšeme do apostrofů:

char c = 'A';
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Char patří v podstatě do celočíselných proměnných (obsahuje číselný kód znaku), ale přišlo mi logičtější uvést ho zde.

BigDecimal

Typ BigDecimal řeší problém ukládání desetinných čísel v binární podobě, ukládá totiž číslo vnitřně jako pole. Používá se tedy pro uchování peněžních hodnot. Nebudeme si zde ukazovat použití, protože se používá jako objekt. Pokud budete dělat někdy finanční výpočty, tak si na něj vzpomeňte.

Pozn.: V Javě jsou čísla tzv. odděděna od třídy Number. To je spíše informace do budoucna. Jelikož nyní nevíme, co dědičnost znamená, důležitá pro nás není. Number obsahuje ještě čtyři podtřídy, kterými se nebudeme podrobněji zabývat. BigDecimal a BigInteger slouží k výpočtům s vysokou přesností. Třídy AtomicInteger a AtomicLong se používají v aplikacích s více podprocesy. Opět je důležité, abyste věděli, že něco takového existuje a případně se sem později vrátili.

Boolean

Boolean nabývá dvou hodnot: true (pravda) a false (nepravda). Budeme ho používat zejména tehdy, až se dostaneme k podmínkám. Do proměnné typu boolean lze uložit jak přímo hodnotu true/false, tak i logický výraz. Zkusme si jednoduchý příklad:

boolean b = false;
boolean vyraz = (15 > 5);
System.out.println(b);
System.out.println(vyraz);

Výstup programu:

Konzolová aplikace
false
true

Výrazy píšeme do závorek. Vidíme, že výraz nabývá hodnoty true (pravda), protože 15 je opravdu větší než 5. Od výrazů je to jen krok k podmínkám, na ně se podíváme příště.

Referenční datové typy

K referenčním typům se dostaneme až u objektově orientovaného programování, kde si také vysvětlíme zásadní rozdíly. Zatím budeme pracovat jen s tak jednoduchými typy, že rozdíl nepoznáme. Spokojíme se s tím, že referenční typy jsou složitější, než ty primitivní. Jeden takový typ již známe, je jím String. Možná vás napadá, že String nemá nijak omezenou délku, je to tím, že s referenčními typy se v paměti pracuje jinak. Hodnotové typy začínají narozdíl od typů primitivních velkým písmenem.

String má na sobě řadu opravdu užitečných metod. Některé si teď probereme a vyzkoušíme:

String

StartsWith(), endsWith() a contains()

Můžeme se jednoduše zeptat, zda řetězec začíná, končí nebo zda obsahuje určitý podřetězec (substring). Podřetězcem myslíme část původního řetězce. Všechny tyto metody budou jako parametr brát samozřejmě podřetězec a vracet hodnoty typu boolean (true/false). Zatím na výstup neumíme reagovat, ale pojďme si ho alespoň vypsat:

String s = "Krokonosohroch";
System.out.println(s.startsWith("krok"));
System.out.println(s.endsWith("hroch"));
System.out.println(s.contains("nos"));
System.out.println(s.contains("roh"));

Výstup programu:

Konzolová aplikace
false
true
true
false

Vidíme, že vše funguje podle očekávání. První výraz samozřejmě neprošel díky tomu, že řetězec ve skutečnosti začíná velkým písmenem.

toUpperCase() a toLowerCase()

Rozlišování velkých a malých písmen může být někdy na obtíž. Mnohdy se budeme potřebovat zeptat na přítomnost podřetězce tak, aby nezáleželo na velikosti písmen. Situaci můžeme vyřešit pomocí metod toUpperCase() a toLowerCase(), které vrací řetězec ve velkých a v malých písmenech. Uveďme si reálnější příklad než je Krokonosohroch. Budeme mít v proměnné řádek konfiguračního souboru, který psal uživatel. Jelikož se na vstupy od uživatelů nelze spolehnout, musíme se snažit eliminovat možné chyby, zde např. s velkými písmeny.

String konfig = "Fullscreen shaDows autosave";
konfig = konfig.toLowerCase();
System.out.println("Poběží hra ve fullscreenu?");
System.out.println(konfig.contains("fullscreen"));
System.out.println("Budou zapnuté stíny?");
System.out.println(konfig.contains("shadows"));
System.out.println("Přeje si hráč vypnout zvuk?");
System.out.println(konfig.contains("nosound"));
System.out.println("Přeje si hráč hru automaticky ukládat?");
System.out.println(konfig.contains("autosave"));

Výstup programu:

Konzolová aplikace
Poběží hra ve fullscreenu?
true
Budou zapnuté stíny?
true
Přeje si hráč vypnout zvuk?
false
Přeje si hráč hru automaticky ukládat?
true

Vidíme, že jsme schopni zjistit přítomnost jednotlivých slov v řetězci tak, že si nejprve řetězec převedeme celý na malá písmena (nebo na velká) a potom kontrolujeme přítomnost slova jen malými (nebo velkými) písmeny. Takhle by mimochodem mohlo opravdu vypadat jednoduché zpracování nějakého konfiguračního skriptu.

Trim()

Další nástrahou mohou být mezery a obecně všechny tzv. bílé znaky, které nejsou vidět, ale mohou nám uškodit. Obecně může být dobré trimovat všechny vstupy od uživatele. Zkuste si v následující aplikaci před číslo a za číslo zadat několik mezer, trim() je odstraní. Odstraňují se vždy bílé znaky kolem řetězce, nikoli uvnitř:

System.out.println("Zadejte číslo:");
String s = sc.nextLine();
System.out.println("Zadal jste text: " + s);
System.out.println("Text po funkci trim: " + s.trim());
int a = Integer.parseInt(s.trim());
System.out.println("Převedl jsem zadaný text na číslo parsováním, zadal jste: " + a);
Replace()

Asi nejdůležitější metodou na Stringu je nahrazení určité jeho části jiným textem. Jako parametry zadáme dva podřetězce, jeden co chceme nahrazovat a druhý ten, kterým to chceme nahradit. Metoda vrátí nový String, ve kterém proběhlo nahrazení. Když daný podřetězec metoda nenajde, vrátí původní řetězec. Zkusme si to:

String s = "C# je nejlepší!";
s = s.replace("C#", "Java");
System.out.println(s);

Výstup programu:

Konzolová aplikace
Java je nejlepší!
Format()

Format() je velmi užitečná metoda, která nám umožňuje vkládat do samotného textového řetězce zástupné značky. Ty jsou reprezentovány jako procento a zkratka datového typu. Metoda se volá na typu String, prvním parametrem je textový řetězec se značkami, další dále následují proměnné v tom pořadí, v kterém se mají do textu místo značek vložit. Všimněte si, že se metoda nevolá na konkrétní proměnné (přesněji instanci, viz další díly), ale přímo na typu String.

int a = 10;
int b = 20;
int c = a + b;
String s = String.format("Když sečteme %d a %d, dostaneme %d", a, b, c);
System.out.println(s);

Výstup programu:

Konzolová aplikace
Když sečteme 10 a 20, dostaneme 30

Značky jsou:

  • %d pro celá čísla
  • %s pro Stringy
  • %f pro float. U float můžeme definovat délku desetinné části, např: %.2f pro dvě desetinná místa.

Konzole sama umí přijímat text v takovémto formátu, jen musíme místo println() volat printf(). Můžeme tedy napsat:

int a = 10;
int b = 20;
int c = a + b;
System.out.printf("Když sečteme %d a %d, dostaneme %d", a, b, c);

Toto je velmi užitečná a přehledná cesta, jak sestavovat řetězce, i přesto se však v Javě řetězce spojují spíše pomocí operátoru "+".

Length()

Poslední, ale nejdůležitější je length(), tedy délka. Vrací celé číslo, které představuje počet znaků v řetězci.

System.out.println("Zadejte vaše jméno:");
String jmeno = sc.nextLine();
System.out.printf("Délka vašeho jména je: %d", jmeno.length());

Je toho ještě spoustu k vysvětlování a jsou další datové typy, které jsme neprobrali. Aby jsme však stále neprobírali jen teorii, ukážeme si již v příští lekci, Podmínky (větvení), podmínky a cykly. Potom bude naše programátorská výbava dostatečně velká k tomu, abychom tvořili zajímavé programy :)


 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
116 hlasů
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Předchozí článek
Proměnné, typový systém a parsování
Všechny články v sekci
Základní konstrukce jazyka Java
Miniatura
Následující článek
Cvičení k 4. lekci Javy
Aktivity (12)

 

 

Komentáře

Avatar

Neregistrovaný
Avatar
:5.2.2013 16:05

pardon ze se do toho pletu, ale proc v tutorialu o jave pises ze je C# nejlepsi?

 
Odpovědět 5.2.2013 16:05
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na
David Jančík:5.2.2013 16:08

Aby tento fám vyvrátila metoda replace, která nahradí v daném řetězci zadané slovo "C#" slovem "Java" a výstupem tedy bude: "Java je nejlepší" ;) Čti pozorněji a kódy si zkoušej :P

Odpovědět 5.2.2013 16:08
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Kit
Redaktor
Avatar
Odpovídá na
Kit:5.2.2013 16:10

Když se na to podíváš pořádně, tak na výstupu se vypíše "Java je nejlepší!".

Odpovědět 5.2.2013 16:10
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Зайчик
Člen
Avatar
Зайчик:23.3.2013 19:09

Hoj, nemáš vyplněno kolik bitů je v booleanu je to 8b, tak je to snad v každém jazyce.

Odpovědět 23.3.2013 19:09
Коммунизм для нашего будущего!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovědět 27.3.2013 10:42
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Lukaaash
Redaktor
Avatar
Lukaaash:30.4.2013 15:27

V posledním kódu máš string místo String ;)

Odpovědět  +1 30.4.2013 15:27
Trocha poezie do toho umírání
Avatar
str8.1
Člen
Avatar
Odpovídá na Lukaaash
str8.1:1.7.2013 15:28

Dík za ten String, já porád prečo mi to nefachči.... :-D

 
Odpovědět 1.7.2013 15:28
Avatar
sisolpes
Člen
Avatar
Odpovídá na
sisolpes:28.10.2013 19:22

Je to jen příklad, že nějaké slovo se může před vypsáním do konzole změnit.
Alespoň tak to chápu já.

Odpovědět 28.10.2013 19:22
Alt + 2
Avatar
sisolpes
Člen
Avatar
sisolpes:5.11.2013 14:28

Mě napadlo, jestli nejde, aby si uživatel vybral, do jakého textového řetězce psát.

PŘÍKLAD
...
System.out.prin­tln("Přeložit do němčiny:");
//Onen kód
System.out.prin­tln("Přeložit do češtiny:");
...

Odpovědět 5.11.2013 14:28
Alt + 2
Avatar
vrciak1
Člen
Avatar
vrciak1:2.5.2014 22:57

Stale sa neopravila chyba v poslednom priklade. Spravne ma byt:
String jmeno = sc.nextLine();

 
Odpovědět 2.5.2014 22:57
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Lukaaash
David Čápka:9.9.2014 18:56

Nojo, díky, opraveno :)

Odpovědět 9.9.2014 18:56
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
dinokino
Člen
Avatar
dinokino:12.9.2014 23:41

Mohu se zeptat kde mám chybu? :)
int a=1;
int b=2;
int c=a+b;
String d=String.format("%d a %d jsou %d",a,b,c);
System.out.prin­tf("%d a %d jsou %d",a,b,c);
System.out.prin­tln("Ahoj");
System.out.prin­tln(d);
System.out.prin­tln("Ahoj");
V prvním případě se Ahoj dopíše na stejný řádek jako "1 a 2 jsou 3". Jako by to nebyl nový příkaz. Druhé Ahoj už se zobrazí správně(tj.na řádek pod 2. větu "1 a 2 jsou 3".Napadlo mě dopsat pod čast: System.out.prin­tf("%d a %d jsou %d",a,b,c); TOHLE : System.out.prin­tln(); a funguje to spolehlivě...Jen předpokládám, že je to zbytečné "znepřehledňování" kódu...? :)

 
Odpovědět  +1 12.9.2014 23:41
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na dinokino
tomisoka:13.9.2014 5:28

1 ) Používej code pro zpřehlednění (viz obrázek)
2 )

System.out.println();

Automaticky dodává za to co vypíšeš nový řádek (println = print line), printf to automaticky nedodává a na nový řádek stačí dodat znak '\n'.

System.out.printf("%d a %d jsou %d\n",a,b,c);
Editováno 13.9.2014 5:29
 
Odpovědět 13.9.2014 5:28
Avatar
dinokino
Člen
Avatar
Odpovídá na tomisoka
dinokino:13.9.2014 11:36

Moc díky :)

 
Odpovědět 13.9.2014 11:36
Avatar
dinokino
Člen
Avatar
dinokino:13.9.2014 22:49

Mohu se zeptat jaký je rozdíl mezi tímhle:

System.out.println("Hello world!");

a tímhle:

System.out.printf("Hello world!\n");

? :)
A proč nefunguje tohle:

int a=1;
int b=2
System.out.println("%d a %d jsou %d",a,b,a+b);

? :)

 
Odpovědět 13.9.2014 22:49
Avatar
tomasmanhal
Člen
Avatar
tomasmanhal:13.9.2014 22:52

Chybí Ti tam středník, za druhým intem

Editováno 13.9.2014 22:53
Odpovědět 13.9.2014 22:52
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
dinokino
Člen
Avatar
Odpovídá na tomasmanhal
dinokino:13.9.2014 23:13

jojo,díky,ale stejně to nefunguje...Mě spíš zajímá proč? Kdybych místo println napsal printf,tak to fungovat bude...Takže mě zajímá, jaký je mezi println a printf rozdíl...? :)

 
Odpovědět 13.9.2014 23:13
Avatar
tomasmanhal
Člen
Avatar
tomasmanhal:13.9.2014 23:18

klasický print ti odešle řetězec, println ti ho odešle také, ale na konec nové řádky a printf zase vypíše řetězec formátovaný ;-) proto jsou tam ty znaky s % ;-)

Editováno 13.9.2014 23:18
Odpovědět 13.9.2014 23:18
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
dinokino
Člen
Avatar
 
Odpovědět 13.9.2014 23:21
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na dinokino
tomasmanhal:13.9.2014 23:23

Všechno jde najít v dokumentaci javy přímo na webu oraclu :-)

Odpovědět 13.9.2014 23:23
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
Jarvis
Člen
Avatar
Jarvis:13.12.2014 16:00

"Hodnotové typy začínají narozdíl od typů primitivních velkým písmenem."

Hodnotové typy jsou právě základní (primitivní) typy (čísla, znaky, boolean), nebo se pletu?

Díky :-)

 
Odpovědět 13.12.2014 16:00
Avatar
charliho
Člen
Avatar
charliho:3.1.2015 11:50

Díky za tento článek, je zde dosti informací a funkcí, bez kterých se neobejdete :) Java mě začíná bavit ;) až budu v ní zdatnější tak hurá na android :D ;)

 
Odpovědět 3.1.2015 11:50
Avatar
exclusive.fashion:6.1.2015 0:29

Hellou... kdo se dostal sem tak blahopreju.... vse je ukradene a na tyhle ....
Pro přístup k článku potřebuješ 10 bodů
Na svém účtu máš aktuálně 3 bodů
10 bodů získáš za přidání svého článku na síť nebo za 25,00 Kč
... sracky nejsem zvedavy...
originalni web z ktereho byl tutorial ukradnut a predelan je zde....
http://www.algoritmy.net/…8/Promenne-3
a mimochodem ... je zdarma pouze s moznosti prispevku... :)
Ja te dam skill ty ....... fufh

 
Odpovědět  -7 6.1.2015 0:29
Avatar
exclusive.fashion:6.1.2015 0:36

smysl života je v poznání... :D

 
Odpovědět 6.1.2015 0:36
Avatar
adamjil
Člen
Avatar
adamjil:30.1.2015 22:16

Děkuji, je to moc dobře vysvětleno:). Akorát jsem nepochopil ten length na konci, narazil jsem na něj v díle 7 "Pole v Javě". Přikládám kód, jedinej ten length jsem nepochopil, jak v mém kódu funguje. Dík :)

int[] pole = new int[10];
        for (int i = 0; i < 10; i++)
            pole[i] = i + 1;
        for (int i = 0; i < pole.length; i++)
            System.out.printf("%d ", pole[i]);
 
Odpovědět 30.1.2015 22:16
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na adamjil
Jan Vargovský:30.1.2015 23:42

Je to jen odkaz na velikost pole. Jinak by sis všude v parametru funkce, když bys předával pole, musel předat i velikost pole, ale proč, když to ten objekt umí už nativně?

 
Odpovědět 30.1.2015 23:42
Avatar
adamjil
Člen
Avatar
 
Odpovědět 31.1.2015 11:28
Avatar
adamjil
Člen
Avatar
adamjil:2.2.2015 20:06

Ta funkce trim funguje jenom u int? Protože mě tenhle kód nefunguje:

public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in, "Windows-1250");
    System.out.println("Zadej zprávu, kterou chceš zašifrovat: ");
    String s = sc.nextLine();
    s = s.trim();
    System.out.printf("Původní zpráva: %s\n", s);
    String zprava = "";
    int posun = 1;
    for (char c : s.toCharArray())
    {
        int i = (int)c;
        i += posun;
        if (i > (int)'z')
        {
            i -= 26;
        }
        char znak = (char)i;
        zprava += znak;
    }
    System.out.printf("Zašifrovaná zpráva: %s\n", zprava);
}

Sorry že sem píšu znova, ale tenhle díl mi dal zabrat :)
P.S. je to trošku poupravený kód z 8. dílu.

Editováno 2.2.2015 20:07
 
Odpovědět 2.2.2015 20:06
Avatar
Zbyněk Miroš:1.4.2015 21:01

Ahoj, v prikladu na format jsem zkusil misto int deklarovat promenne jako byte. U c mi to pise chybu. chapu to sprave, ze vysledek vyrazu je automaticky int?

 
Odpovědět 1.4.2015 21:01
Avatar
mr.aliaz
Člen
Avatar
mr.aliaz:12.4.2015 18:57

Jak odstranit bílé znyka u Stringu? Píšu program a potřebuji odstranit bílé znaky, protože se program neprovede jak má.

Odpovědět 12.4.2015 18:57
Nic není nemožné.
Avatar
Pavol Kubek
Člen
Avatar
Odpovídá na exclusive.fashion
Pavol Kubek:8.5.2015 20:19

Tu ide hlavne o príklady k lekcii, ktoré vymýšľal autor. Sám som si prešiel obsah článkov a počet článkov, ktoré treba "kúpiť" a celá lekcia Javy vychádza asi na 20 eur. To sa ti zdá tak prehnané? Tak choď do kurzu, kde ťa naučia "Hello world" za 150 eur.

 
Odpovědět  +2 8.5.2015 20:19
Avatar
Odpovídá na Zbyněk Miroš
Marcel Smolik:4.7.2015 13:49

Ano java automaticky mění datový typ na vyší když se tam velikost proměnný nevleze.

U float java bere tuším rovnou na double když chceš přímo na float tak musíš napsat 15,8f

 
Odpovědět 4.7.2015 13:49
Avatar
jakub.dodek
Člen
Avatar
jakub.dodek:27.11.2015 12:06

Nechápem prečo nemožete tie prémiové články zrušiť, každý by sa rád naučil programovanie, ale nie každý na to má peniaze.

 
Odpovědět  -4 27.11.2015 12:06
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na jakub.dodek
pocitac770:27.11.2015 15:44

25 Kč za článek je dobrá cena, když vezmeš v úvahu "klasickou" cenu kurzů programování. Protože to píšeš sem, tak hádám, že jsi se sem dostal. Normální články (vysvětlující) jsou zadarmo, placené jsou pouze cvičení, které jsou pro lidi bez fantazie, kteří si cvičení nedokáží vymyslet z každodenního života (např. potřebuješ zjistit, jak se něco píše pozpátku, tak co si naprogramovat pozpátkovač? (za pár lekcí je to záležitost 10 minut)). Až později, když se už výuka dostává na nějakou "profesionálnější" úroveň se objeví sem tam i placené normální články, ale věř mi, že to za těch pár kaček stojí. A když někdo chce tyhle prémiové věci zrušit, tak si asi myslí, že síť jede asi na... ehrm... "exkrementy" :D Už jenom provoz stránek něco stojí, a nezapomeň, že autoři těchto článků si vlastně ukousnou hromadu ze svého času, aby napsali něco, co ostatním pomůže k lepším dovednostem. V tu chvíličást peněz jde i jim do kapsy, ale zapomeň na miliony denně....

Editováno 27.11.2015 15:45
 
Odpovědět  +3 27.11.2015 15:44
Avatar
Lubor Pešek
Člen
Avatar
Odpovídá na adamjil
Lubor Pešek:30.11.2015 23:12

adamjil-ovi:

"Ta funkce trim funguje jenom u int? Protože mě tenhle kód nefunguje:"
I v tutoriálu ukazují přímo String-ovou proměnnou. Kód máš v pořádku, když tak napiš jakou chybu ti to vypisuje?

Odpovědět 30.11.2015 23:12
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
Jirka
Člen
Avatar
Jirka:4.4.2016 16:50

Mám dotaz, jaký je rozdíl mezi contains a equals? Děkuji za odpověď

 
Odpovědět 4.4.2016 16:50
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Jirka
pocitac770:4.4.2016 22:19

Equals porovnává onen String, jestli jde o totožný, zároveň (což zjistíš později) se používá "nativně" i u jiných objektůk porovnávání, ale musíš to equals poté nadefinovat (říkám, později). Contains je metoda pro String, která slouží pro vyhledávání určitého řetězce v jiném řetězci, například:

String s = "test";
System.out.println(s.contains("es"));

toto vrací

true

toto ovšem...

String s = "test";
System.out.println(s.equals("es"));

...vrací

false
 
Odpovědět 4.4.2016 22:19
Avatar
Petr(K)
Člen
Avatar
Petr(K):28.4.2016 8:58

Ahoj,
příklad, který je u příkazu Trim mi nefunguje. Konkrétně řádek

int a = Integer.parse­Int(s.trim());

chyba:
Exception in thread "main" java.lang.Num­berFormatExcep­tion: For input string: "ahoj"
at java.lang.Num­berFormatExcep­tion.forInput­String(Number­FormatExcepti­on.java:65)
at java.lang.Inte­ger.parseInt(In­teger.java:580)
at java.lang.Inte­ger.parseInt(In­teger.java:615)
at prace.s.textem­.PraceSTextem­.main(PraceSTex­tem.java:62)
C:\Users\Peta\Ap­pData\Local\Net­Beans\Cache\8­.1\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 9 seconds)

co je zde špatně?

Děkuji za pomoc.

 
Odpovědět 28.4.2016 8:58
Avatar
tomisoka
Redaktor
Avatar
Odpovídá na Petr(K)
tomisoka:28.4.2016 17:56

Trim ti funguje, tak jak má. Ale "ahoj" vážně není číslo.

 
Odpovědět  +1 28.4.2016 17:56
Avatar
Odpovídá na jakub.dodek
Dmitriy Belokur:19.7.2016 23:07

Zkus jednou vytvořit web a ty otázky padnou stranou. Podlé mého, se jedná o symbolickou cenu vzhledem k tomu, co za to dostáváš.

 
Odpovědět 19.7.2016 23:07
Avatar
Wolf
Člen
Avatar
Wolf:29.7.2016 23:44

Dobry den,chcel by som sa spýtať k tomu toUpperCase a toLowerCase podľa čoho dáva tie výsledky k tým otázkam?

Odpovědět 29.7.2016 23:44
"Whether you think you can, or you think you can't - you're right."(Henry Ford)
Avatar
Bob Herajn
Člen
Avatar
Bob Herajn:13.9.2016 13:27

Ahoj, jak mám vložit metodu toUpperCase() nebo toLowerCase(), aby se mi zvětšila nebo zmenšila všechna písmena napsaná uživatelem? Díky

Odpovědět 13.9.2016 13:27
Only you determinate your limits.
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Bob Herajn
pocitac770:13.9.2016 14:33

Nevím, co je na tom složitého, ale budiž, musíš nejprve získat vstup od uživatele, tzn.

Scanner sc = new Scanner(System.in, "Windows-1250");
String text = sc.nextLine();

A v tuhle chvíli máš již Strigovou proměnnou, na které můžeš volat právě onu metodu

Scanner sc = new Scanner(System.in, "Windows-1250");
String text = sc.nextLine();
text = text.toUpperCase(); //nebo .toLowerCase()
Editováno 13.9.2016 14:34
 
Odpovědět 13.9.2016 14:33
Avatar
Bob Herajn
Člen
Avatar
Odpovídá na pocitac770
Bob Herajn:13.9.2016 15:11

Mám to díky moc ;)

Odpovědět 13.9.2016 15:11
Only you determinate your limits.
Avatar
Miroslav Melzer:28.9.2016 12:22

Mám dotaz k tomu Repalce. To jde nahradit vždy jen jeden výraz? Myslím tím, kdybych chtěl udělat velikou legraci a v tom co uživatel zadá nahradit všechny třeba "a" + "e" písmenem b, nebo nahradit všechny samohlásky...

 
Odpovědět 28.9.2016 12:22
Avatar
Nessay
Člen
Avatar
Nessay:6.10.2016 0:36

ahojte,

otazocka. Metoda trim odstranuje biele znaky aj medzi substring-ami v jedno string-u?
Pretoze pri priklade s length o spocitani znakov v mene mi to pocita aj medzeru. Ako to "trimovat" aby ju nepocitalo?

System.out.println("Napis tvoje meno prosim");
String meno = sc.nextLine();
System.out.println("Tvoje meno bez medzier je: "+ meno.trim());
System.out.printf("Délka vašeho jména je: %d\n", meno.length());

Vrati mi

Napis tvoje meno prosim
Kubko Lotor
Tvoje meno bez medzier je: Kubko Lotor
Délka vašeho jména je: 11
 
Odpovědět 6.10.2016 0:36
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Nessay
pocitac770:6.10.2016 1:13

Trim pouze odstraňuje mezery před a za textem, tedy takové, které na obsah textu nemají žádný vliv (akorát je posunut na normální místo + ve zdejším příkladě umožňuje správně naparsovat číslo, když uživatel usne na mezerníku). Pokud chceš naradit mezery v textu obecně, musíš použít metodu .replace()

String s = "Tohle je zkusebni text";
System.out.println(s.replace(" ", ""));

Output:

Tohlejezkusebnitext
Editováno 6.10.2016 1:14
 
Odpovědět 6.10.2016 1:13
Avatar
Martin Nebesář:5.2.2017 19:38

Ahoj, hned prvni referencni typ String mi nefunguje a nevim proc:

https://www.dropbox.com/…19.36.22.png?dl=0

 
Odpovědět 5.2.2017 19:38
Avatar
Petr Štechmüller
Překladatel
Avatar
Odpovídá na Martin Nebesář
Petr Štechmüller:5.2.2017 19:59

To se nemůžeš divit, když máš pojmenovanou vlastní třídu taky String.
Přejmenuj si tu třídu a všechno bude fungovat.

Odpovědět 5.2.2017 19:59
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Martin Nebesář
vajkuba1234:5.2.2017 20:05

Vkladej kod do code pomoci </>. Nevim co se to tady rozmohlo, ze nekdo dava linky s fotkou...

Odpovědět 5.2.2017 20:05
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Martin Nebesář:5.2.2017 23:02

Problem se Stringem vyresen, ale narazil jsem na dalsi. Co a kde presne mi maze nebo ma mazat Trim?

source:

</>code
package prikladtrim;

import java.util.Scanner;

public class PrikladTrim {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in, "Windows-1250");
System.out.prin­tln("Zadejte číslo:");
String s = sc.nextLine();
System.out.prin­tln("Zadal jste text: " + s);
System.out.prin­tln("Text po funkci trim: " + s.trim());
int a = Integer.parse­Int(s.trim());
System.out.prin­tln("Převedl jsem zadaný text na číslo parsováním, zadal jste: " + a);
</>code

a output:

</>code
run:
Zadejte číslo:
10
Zadal jste text: 10
Text po funkci trim: 10
Převedl jsem zadaný text na číslo parsováním, zadal jste: 10
BUILD SUCCESSFUL (total time: 2 seconds)
</>code

 
Odpovědět 5.2.2017 23:02
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Martin Nebesář
vajkuba1234:6.2.2017 1:27

Mel jsem na mysli tlacitko code tady v editoru...

btw.

Odstraňují se vždy bílé znaky kolem řetězce, nikoli uvnitř

Odpovědět  +2 6.2.2017 1:27
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Odpovídá na vajkuba1234
Martin Nebesář:6.2.2017 12:17

Moc dekuji, jsem uplny zacatecnik. Ucim se pomalu, ale jiste ;)

 
Odpovědět  +1 6.2.2017 12:17
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Martin Nebesář
vajkuba1234:6.2.2017 12:22

V pohode :) Je dobre, ze se ptas. :)

Odpovědět 6.2.2017 12:22
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Martin Nebesář:6.2.2017 12:55

Stale jsem se u Trim nepohnul ani o krok. Pod pojmem bile znaky si predstavuji mezery navic, ale cemu nerozumim je kde presne ony mezery maji byt, abych pochopil jak funguje Trim v praxi. Do ktereho radku a kam presne mam mezery umistit?

Scanner sc = new Scanner(System.in, "Windows-1250");
        System.out.println("Zadejte číslo:");
        String s = sc.nextLine();
        System.out.println("Zadal jste text: " + s);
        System.out.println("Text po funkci trim: " + s.trim());
        int a = Integer.parseInt(s.trim());
        System.out.println("Převedl jsem zadaný text na číslo parsováním, zadal jste: " + a);
 
Odpovědět 6.2.2017 12:55
Avatar
Odpovídá na Martin Nebesář
Erik Šťastný:6.2.2017 13:43

První odkaz na googlu...

Vrátí kopii tohoto řetězce s odstraněnýma mezerama na začátku a konci nebo tento řetězec, pokud žádné mezery na začátku nebo na konci nemá.

Editováno 6.2.2017 13:44
 
Odpovědět 6.2.2017 13:43
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Martin Nebesář
vajkuba1234:6.2.2017 13:48

Napis si do vstupu treba toto: " Ahoj svete! ". Samozrejme tam hod ten text uvnitr uvozovek. To by ti uz melo byt jasne.

Edit: Tak si do tech uvozovek pridej treba 5 mezer na zacatek, mezi slovy Ahoj a svete a na konec retezce.

Editováno 6.2.2017 13:49
Odpovědět 6.2.2017 13:48
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Odpovídá na vajkuba1234
Martin Nebesář:6.2.2017 17:03

Dekuji moc, uz funguje ;) Momentalne se venuji cviceni ke 4. lekci Javy a jde o hotove peklo :)

 
Odpovědět 6.2.2017 17:03
Avatar
vajkuba1234
Člen
Avatar
Odpovídá na Martin Nebesář
vajkuba1234:6.2.2017 17:12

Neni zac. Neboj, to bude v pohode. :) Kazdy zacinal. :)

Odpovědět 6.2.2017 17:12
No hope, no future, JUST WAR! For world peace Israel must be DESTROYED!
Avatar
Martin Nebesář:6.2.2017 20:29

Prvni ukol uz mam skoro hotovy, ale nedari se mi nastavit toUpperCase();, aby menil na kapitalky libovolny text. Vzdy otiskne jen v uvozovkach uvedeny.

Scanner sc = new Scanner(System.in, "Windows-1250");
System.out.println("Zadej jméno:");
String jmeno = sc.nextLine();
System.out.println("Zadej příjmení:");
String prijmeni = sc.nextLine();
System.out.println("Zadej svůj věk:");
String vek = sc.nextLine();
int a = Integer.parseInt(vek);
String pismo = "";
pismo = pismo.toUpperCase();
System.out.println(pismo);
int b = 1;
int c = a+b;
System.out.println("Za rok Ti bude " + c);
Editováno 6.2.2017 20:31
 
Odpovědět 6.2.2017 20:29
Avatar
Martin Nebesář:6.2.2017 20:32
String pismo = "";

Zde v uvozovkach jsem mel uvedene sve jmeno, ale pri zmene na jine se samozrejme otisklo spatne puvodni.

 
Odpovědět 6.2.2017 20:32
Avatar
Lukáš Vítek:9.3.2017 17:33

Ahoj, asi mám absurdní dotaz, ale chtěl jsem zkusit předělat replace, ale s tím, aby to nebralo na zřetel záměnu malých a velkých písmen. Bohužel se mi to povedlo jen z části. Může na to někdo prosím mrknout?

String konfig = "C# je nejlepší";
konfig = konfig.toLower­Case();
konfig = konfig.toUpper­Case();
konfig = konfig.replace ("c#", "Java");
System.out.prin­tln(konfig);

Chybu to nehlásí, ale hází to změnu velikosti písmene C

Díky

 
Odpovědět 9.3.2017 17:33
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Lukáš Vítek
Matúš Petrofčík:9.3.2017 17:42
String konfig = "C# je nejlepší";

// teraz zmeníš všetky písmenká na malé
konfig = konfig.toLowerCase();

// teraz zmeníš všetky písmenká na veľké, prečo? :D
konfig = konfig.toUpperCase();

konfig = konfig.replace ("c#", "Java");
System.out.println(konfig);

Riešením môže byť buď:

String konfig = "C# je nejlepší";
konfig = konfig.replace ("C#", "Java"); // najprv skúsiť veľké C
konfig = konfig.replace ("c#", "Java"); // potom skúsiť malé c
System.out.println(konfig);

ale najideálnejšie by malo byť toto:

String konfig = "C# je nejlepší";
konfig = konfig.replaceAll("(?i)c#", "Java"); // pridaním (?i) pred dané písmenko by malo hľadať C# bez ohľadu na veľkosť písmenka, taktiež sa zmenila metoda
System.out.println(konfig);
Odpovědět 9.3.2017 17:42
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Matúš Petrofčík
Lukáš Vítek:9.3.2017 17:45

Aha, tak jsem špatně pochopil konfig.toLower­Case() a Upper, myslel jsem, že to díky tomu bude projíždět možnosti jak velkých tak malých. Díky

 
Odpovědět 9.3.2017 17:45
Avatar
Mirek
Člen
Avatar
Mirek:10.3.2017 16:28

Nadpisy metod jsou zavádějící: StartsWith(), Replace(), atd.... - správně startsWith(), replace(), trim(), atd. vše začíná malým písmenem.

 
Odpovědět 10.3.2017 16:28
Avatar
Maroš Škumát:14.4.2017 18:55

Keď skúšam spustiť ten program na Trim() tak mi to vždy vypíše toto:
Exception in thread "main" java.lang.Unsup­portedOperati­onException: Not supported yet.
at trim.sc.nextLi­ne(sc.java:15)
at trim.Trim.main(Trim­.java:19)
C:\Users\GameP­C\AppData\Local\Net­Beans\Cache\8­.2\executor-snippets\run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

 
Odpovědět 14.4.2017 18:55
Avatar
Odpovídá na Maroš Škumát
Miroslav Peterka:11.5.2017 10:24

Zde je v článku chyba, je třeba založit objekt (snad to neříkám blbě:-) ) sc. Přidal jsem si na začátek řádek
Scanner sc = new Scanner(System.in, "Windows-1250");
a vše fachá jak má :).

 
Odpovědět 11.5.2017 10:24
Avatar
Odpovídá na Miroslav Peterka
Miroslav Peterka:11.5.2017 10:43

Stejná chybička je podle mě i v sekci pro count() metodu.

 
Odpovědět 11.5.2017 10:43
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Miroslav Peterka
pocitac770:11.5.2017 14:30
Pokud budete potřebovat v kterémkoli ze svých programů načíst text z konzole, je nutné program takto upravit a přidat proměnnou sc!

Úryvek z předchozího dílu, David počítá s tím, že ten složitý řádek není potřeba psát do každého příkladu, akorát zabírá místo navíc

 
Odpovědět 11.5.2017 14:30
Avatar
Kuba
Člen
Avatar
Kuba:28.5.2017 15:29

Ahoj, vysvětlí mi prosím někdo, kde se používá equals() a kde contains()?

  • contains, (řetězec obsahuje nějaký podřetězec)?
  • equals (podřetězec se rovná podřetězci)?

Děkuji!

Editováno 28.5.2017 15:30
 
Odpovědět 28.5.2017 15:29
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Kuba
pocitac770:29.5.2017 0:13

Sám sis odpověděl, equals používáme, pokud chceme vědět, že dva (v tomto případě) Stringy jsou stejné, contains, pokud nás zajímá, jestli String A obsahuje String B, příklad

Scanner sc = new Scanner(System.in, "Windows-1250");
System.out.println("Napište něco");
String cont = sc.nextLine();
if(cont.contains("?"){
        System.out.println("Toto je otázka");
}
System.out.println("Pokud chcete ukončit program, napište \"ano\"");
String eq = sc.nextline();
if(!eq.equals("ano")){
        System.exit(0);
}
System.out.println("Jedu dál....");
Editováno 29.5.2017 0:16
 
Odpovědět  +1 29.5.2017 0:13
Avatar
Kuba
Člen
Avatar
Odpovídá na pocitac770
Kuba:29.5.2017 17:43

tak jsem rád, že jsem to pochopil správně :) děkuji!

 
Odpovědět 29.5.2017 17:43
Avatar
Arny
Člen
Avatar
Arny:1.6.2017 22:31

Ahoj, poradí mi někdo proč toto neběží? Díky

package javaapplication15;
import java.util.Scanner;

    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in, "Windows-1250");
    System.out.println("Zadejte vaše jméno:");
    String jmeno = sc.nextLine();
    System.out.printf("Délka vašeho jména je: %d", jmeno.lenght());
 
Odpovědět 1.6.2017 22:31
Avatar
Odpovídá na Arny
Branislav David:2.6.2017 10:34

Ahoj, mozno ti to nefunguje preto lebo nemas ukonceny main zatvorkou.

Editováno 2.6.2017 10:35
 
Odpovědět 2.6.2017 10:34
Avatar
David
Člen
Avatar
Odpovídá na Arny
David:4.6.2017 11:02

Ahoj, jen jsem si všiml, že v kódu na konci máš lenght místo length. Tedy jen přehozná písmena th.

 
Odpovědět 4.6.2017 11:02
Avatar
Arny
Člen
Avatar
Odpovídá na David
Arny:6.6.2017 18:54

Ahoj. Je to tak. Chyba ve slově "length". Díky

 
Odpovědět 6.6.2017 18:54
Avatar
Maroš Škumát:19.7.2017 16:51

Chcel by som sa spýtať prečo tam pri Length je System.out.printf a nie System.out.println

 
Odpovědět 19.7.2017 16:51
Avatar
Michal Stisek:25.7.2017 20:35

Skvělé, musel jsem si přečíst článek asi 3x, spíše kvůli novým syntaxím, ale pak jsem si zkoušel obměňovat programy z hlavy a šlo to skvěle, díky srozumitelnému článku.

public class DalsiDatoveTypy2 {

    public static void main(String[] args) {
        // použití trim() a replace() na String
        Scanner scan = new Scanner(System.in, "UTF-8");
        System.out.println("Zadej text s bílými znaky: ");
        String vstup = scan.nextLine();
        System.out.println("Zadal jsi: " + vstup);
        System.out.println("Po metodě trim je zadání: " + vstup.trim());
        System.out.println("Zadej jméno současného prezidenta: ");
        String zem = scan.nextLine();
        zem = zem.replace("Zeman" , "Jelimán");
        System.out.println("Náš prezident je " + zem);

    }

}
:-D
Odpovědět 25.7.2017 20:35
Jít pořád dál má smysl
Avatar
Odpovídá na Maroš Škumát
Michal Stisek:28.7.2017 16:38

Řekl bych, že důvodem je nahrazení proměnné v řetězci zástupným znakem d%, které vrací celá čísla, tedy počet znaku ve jménu. Jedná se o metodu format. Jsem začátečník, tak snad nejsem daleko od pravdy

System.out.printf("Délka vašeho jména je: %d", jmeno.length());
Odpovědět 28.7.2017 16:38
Jít pořád dál má smysl
Avatar
Odpovídá na Arny
pavel jandejsek:13.8.2017 21:57

napiš length

 
Odpovědět 13.8.2017 21:57
Avatar
Oleg Harhat
Člen
Avatar
Oleg Harhat:17.9.2017 22:50

Nevíte někdo, v čem je problém? Už na to koukám dlouho a budto jsem přehlídnul nějaký detail, nebo jsem něco špatně nastavil..

 
Odpovědět 17.9.2017 22:50
Avatar
Oleg Harhat
Člen
Avatar
Odpovídá na Oleg Harhat
Oleg Harhat:17.9.2017 22:52

Tak v pořádku, už jsem na to příšel, chybící písmenko.. haha :D

 
Odpovědět 17.9.2017 22:52
Avatar
Jan Švarc
Člen
Avatar
Jan Švarc:26.11.2017 9:41

Mám malej dotaz, jsem začátečník ale uplnej a zajímá mě k čemu se používá přesně to trim()?
předem děkuji :)

 
Odpovědět 26.11.2017 9:41
Avatar
Jan Švarc
Člen
Avatar
Jan Švarc:26.11.2017 9:58

např.: v jakym programu nebo aplikaci by se to dalo využít?

 
Odpovědět 26.11.2017 9:58
Avatar
gcx11
Redaktor
Avatar
Odpovídá na Jan Švarc
gcx11:26.11.2017 10:33

Tam, kde potřebuješ dostat ze vstupu bílé znaky před a za textem. Například vstup textového pole v aplikaci, parsování XML

 
Odpovědět 26.11.2017 10:33
Avatar
Lukas Knap
Člen
Avatar
Lukas Knap:21.12.2017 19:54

Mohl by mi někdo prosím odpověď ... proč mi to stále hází nějakou chybu, když napíšu vše podle zadání, ale vždy, když se mi v textu objeví toto: String jmeno = sc.nextLine(); - tak mě to hodí chybovou hlášku :/

Odpovědět 21.12.2017 19:54
Pokud chceš změnu, musíš se změnit
Avatar
Odpovídá na Lukas Knap
Alena Stracenská:28.12.2017 22:48

Mozes tu hodit zdrojak, nech sa nato pozrieme :)

 
Odpovědět 28.12.2017 22:48
Avatar
mrazal
Člen
Avatar
mrazal:6.1.2018 10:06

Výklad jednoduchý a srozumitelný, pro základní seznámení s konstrukcí jazyka je to dostatečné.

 
Odpovědět 6.1.2018 10:06
Avatar
Vojta Liška
Člen
Avatar
Vojta Liška:8.1.2018 17:32

Nevím proč, ale pořád mi to hlásí chybu u toho: String s = sc.nextLine(); u toho Trim().
Mohl by mi s tím někdo prosím pomoct?

 
Odpovědět 8.1.2018 17:32
Avatar
Vojta Liška
Člen
Avatar
Odpovídá na Vojta Liška
Vojta Liška:8.1.2018 19:38

Tak už jsem na to přišel, zapomněl jsem tam dát to Scanner sc = new Scanner(System.in, "Windows-1250");

 
Odpovědět 8.1.2018 19:38
Avatar
Bite Rook
Člen
Avatar
Bite Rook:25.1.2018 15:57

Zdravím. Jsem úplný začátečník. Chtěl bych se zeptat ohledně 14tého řádku (vím, že tam má být správně printf, s kterým to i funguje), ale potřeboval bych to odřádkovat, a tak se chci zeptat, co s tím musím udělat, aby mi šlo použít println

 
Odpovědět 25.1.2018 15:57
Avatar
Martin Petrovaj
Překladatel
Avatar
Odpovídá na Bite Rook
Martin Petrovaj:25.1.2018 16:59
int dlzka = vstup.trim().length();
System.out.println( String.format("vaše meno je dlhé %1d znakov", dlzka) );

Println bohužiaľ formátovanie stringu v parametri na spôsob printf nepodporuje. Musíš si najprv string zeditovať samostatne, až potom vypísať výsledok.
https://docs.oracle.com/…tStream.html

Editováno 25.1.2018 17:01
Odpovědět 25.1.2018 16:59
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
darf
Člen
Avatar
darf:12.2.2018 21:19

Nazdar. Nejprv diky, za vyborny kurz.
DOTAZ: Dam-li na vstup datovy typ "byte" a napisu tam hodnotu mimo interval dany pro "byte" <-128 až 127>, tak jakto ze program nehavaruje, a proc pracuje dale s hodnotou o kterou dany interval "pretece"?
viz. priklad nasobeni:

Scanner sc = new Scanner(System.in, "Windows-1250");
System.out.prin­tln("Zadejte číslo k zdvojnásobení:");
String s = sc.nextLine();
byte a = (byte) Integer.parse­Int(s);
a = (byte) (a*2);
System.out.prin­tln(a);

 
Odpovědět 12.2.2018 21:19
Avatar
MArtin
Člen
Avatar
Odpovídá na darf
MArtin:16.2.2018 15:04

nebude to preto, ze tam by malo spravne byt:

byte a = Byte.parseByte(s);

Len tak typujem, tiez som java zaciatocnik :-D

 
Odpovědět 16.2.2018 15:04
Avatar
darf
Člen
Avatar
Odpovídá na MArtin
darf:16.2.2018 19:51

V dotazu mi nejde o "chybu v mem kodu", nybrz o vysvetleni toho proc pri takoveto definici vstupu mimo interval, java nehlasi chybu a v pohode si pretece na zavadejici hodnotu?

 
Odpovědět 16.2.2018 19:51
Avatar
gcx11
Redaktor
Avatar
Odpovídá na darf
gcx11:17.2.2018 11:46

Protože to nutíš Javu dělat, díky tomu castování:

byte a = (byte) Integer.parseInt(s);
a = (byte) (a*2);

Bez těch castů se to nezkompiluje

  1. Převádíš integer na byte
  2. Násobíš byte s integerem

https://docs.oracle.com/…l/jls-5.html#…

 
Odpovědět 17.2.2018 11:46
Avatar
gcx11
Redaktor
Avatar
Odpovídá na darf
gcx11:17.2.2018 12:10

I když třeba i při sčítání dvou velkých intergerů může hodnota přetéct. Kvůli tomu, jak počítače fungují uvnitř, tak kontrolování přetečení přidává nějakou režii navíc a výpočty tak zpomaluje, plus je to složitější na implelementaci, tak to Java zpočátku neměla.

Až po téměř 20 letech byla do Javy přidána funkce na kontrolování přetečení:
https://docs.oracle.com/…ng/Math.html#…-

Použití:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in, "Windows-1250");
        System.out.println("Zadejte číslo k zdvojnásobení:");
        int number = Integer.parseInt(sc.nextLine());
        try {
            int result = Math.multiplyExact(number, 2);
            System.out.println(result);
        } catch (ArithmeticException e) {
            System.out.println("Výsledek je moc velký!");
        }
    }
}
 
Odpovědět 17.2.2018 12:10
Avatar
darf
Člen
Avatar
Odpovídá na gcx11
darf:17.2.2018 12:14

gcx11 diky moc za osvetleni teto problematiky.

 
Odpovědět  +1 17.2.2018 12:14
Avatar
Veronika Nováková:27.2.2018 14:04

ahojte, moc by ma potesilo keby v clanku, pripadne v komentaroch som nasla priklady kde sa realne pouzivaju priklady ktore sa ucime v lekciach:) aby mi to viac davalo zmysel :)

 
Odpovědět 27.2.2018 14:04
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Veronika Nováková
pocitac770:27.2.2018 14:53

Co konrkétně myslíš? Protože článek je prolezlý různými příklady, kde vidíš ono reálné užití...

Editováno 27.2.2018 14:53
 
Odpovědět 27.2.2018 14:53
Avatar
Odpovídá na pocitac770
Veronika Nováková:27.2.2018 15:03

myslim realne vyuzitie v nejakej aplikacii vytvorenej javou. napr. ratanie obsahu a obvodu ako bolo v predoslej lekcii viem ze moze byt pouzite napr. v aplikacii ktora rata zo vzorcov ( a tak uzivatelovi zjednodusi ratanie), ale kde mozem vyuzit pocet pismen v zadanom slove? alebo nahradenie vyrazu zadaneho uzivatelom? nic mi nenapada tak si vravim ze sa aspon opytam :)

 
Odpovědět 27.2.2018 15:03
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Veronika Nováková
pocitac770:27.2.2018 15:50

Zkus byt ktrativni, a zkusit si predstavit, kde by mohl byt nejaky problem, ktery bys takto vyresila :)
Pr, delka slova, prestav si, ze nekde vypisujes nejaky seznam, kde by byly ty jmena, a chces, aby to bylo hezky zarovnano treba k pravemu okraji.. tam potrebujes znat delku, aby jsi mohla doplnit potrebny pocet mezer pred to slovo, aby to vychazelo :)
Nahrazovani... to muzes treba potrebovat, kdyz budou v nejake stringu nejaka klicova hesla (napr. jmeno, vek, pohlavi, atp.) A uzivatel to tam bude zadavat, ty to doplnis.... Napriklad ten String bude
Ahoj jsem jmeno, je mi vek let a jsem pohlavi. Nasledne dle uzivatelsleho vstupu doplnis ony udaje, nezavisle na tom, kde a kolikrat se v tom stringu nachazeji

 
Odpovědět 27.2.2018 15:50
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Veronika Nováková
pocitac770:27.2.2018 15:52

Ten hlavni problrm je, ze toto jsou veci ltere se stanou stavebnimi kameny pro budouci programovani mnohonadobne obsahlejsich aplikaci, to je jako se ptat "na co je cihla".. Když i reknu, že se cihly davaji vedle sebe a na sebe, nez vznikne zed, ze kterych je pak dum, tak ti to moc nepovi, protoze ses jeste neucila, co to vubec ta zed nebo dum je... Jen pro predstavu...

 
Odpovědět  +1 27.2.2018 15:52
Avatar
Petr Zajac
Člen
Avatar
Odpovídá na pocitac770
Petr Zajac:27.2.2018 18:14

Najednu stranu je fajn, že je to vysvětleno takhle od "základů", ikdyž asi někdo kdo v životě neprogramoval, nebo nepřišel alespoň k programování jako "analytik", tak pojem "cihla", "zeď", "dům" ... jsou příměry jako pro obyvatele zapomenutých ostrovů kdesi v Tichomoří, který vidí cihlu jako vhodný "nástroj" na to aby cizím nájezdníkům rozbil hlavu ;-)
Jako bývalý programátor (databáze pod DOSem) na to občas koukám jako tele na nová vrata, protože ikdyž jsem programoval databáze, tak jsem (pokud si dobře vzpomínám) jednotlivá písmenka ve slově nepočítal a pokud jsem chtěl vědět od uživatele např. jméno+příjmení+a­dresa, tak jsem to pro svojí "pohodlnost" a user friendly přístup rozkouskoval do více proměných a každou uživatel zadával zvlášť ;-) Byl jsem spokojený JÁ i on ;-)

 
Odpovědět 27.2.2018 18:14
Avatar
Anna Garibyan:1.3.2018 19:49

Ahoj :-)
U příkladu s "toLowerCase()" jak ve větě "Budou zapnuté stíny?" se hledá vyraz "shadows" tak trochu nechápu proč vystup vychází jako true ? Java to překládá ?

 
Odpovědět 1.3.2018 19:49
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Anna Garibyan
pocitac770:1.3.2018 23:53

Nene, jde o to, že máme string vytažený třeba z nějakého konfiguračního souboru, přesněji "Fullscreen shaDows autosave", který si kvůli debilitě uživatelů pro jistotu prevedeme celkově na malá písmena, a pak tam vyhledáváme klíčová slova (autosave, shadows, fullscreen, nosound), pokud tam tyto slova najdeme, tak třeba změníme nějaké nastavení, zde je to reprezentováno pouhým vypsáním... Je to konkrétní příklad užití, ale s velkou abstrakcí samozřejmě :D

 
Odpovědět 1.3.2018 23:53
Avatar
Odpovídá na pocitac770
Anna Garibyan:3.3.2018 17:01

Jasný, už to dává smysl . Díky moc :-)

 
Odpovědět 3.3.2018 17:01
Avatar
Daniel Holánek:7.3.2018 11:56

Ahoj, nechci si stěžovat na kvalitu, článku. Je to úplně skvěle napsané, jen jsem si všiml, že když převedu kódy do NetBeans z ukázkek Trim() a Length(), tak tam chybí Scanner sc = new Scanner(System.in, "Windows-1250"); a bez mi to nefungovalo.
Nebo jsem dělal něco špatně?
Taky jsem si všiml, že Fromat() a Replace() kódy mi fungují i bez import java.util.Scanner;

Nakonec bych se chtěl zeptat proč mi v příkladu Legth() v NetBeans vypočítá délku mého jména jako 15 znaků, ale taky na webu jen 14? (správně je 14)

Díky

Použil jsme tento kód:

package length_trening;

import java.util.Scanner;

public class Length_trening {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in, "Windows-1250");

System.out.prin­tln("Zadejte vaše jméno:");
String jmeno = sc.nextLine();
System.out.prin­tf("Délka vašeho jména je: %d", jmeno.length());
}

}

 
Odpovědět 7.3.2018 11:56
Avatar
Odpovídá na pocitac770
Veronika Nováková:8.3.2018 19:40

Ahojte, na chvilu som sa odmlcala, ale uz som tu. Dakujem za odpovede, aj za priklady ako sa daju znalosti z lekcie vyuzit. To ze tieto veci su ako "cihla" si uvedomujem, no moja zvedavost je vacsia a chcem aby mi to vsetko davalo zmysel uz od zakladu :)

 
Odpovědět 8.3.2018 19:40
Avatar
Tomáš Duda
Člen
Avatar
Odpovídá na Daniel Holánek
Tomáš Duda:12.3.2018 19:12

Ahoj, chci se vyjádřit k tvému problému se jménem a to že pokud tvoje jméno obsahuje háčky či čárky tak to program započítá jako další znak.
Moje jméno je: Tomáš Duda = 12 znaků
Tomas Duda = 10 znaků

 
Odpovědět 12.3.2018 19:12
Avatar
Odpovídá na Tomáš Duda
Daniel Holánek:12.3.2018 21:28

Aha, děkuji. To by mě nenapadlo :)

 
Odpovědět 12.3.2018 21:28
Avatar
Odpovídá na Daniel Holánek
Josef Pospíšil:27.3.2018 14:08

Dle mého to tam chybí, abychom si to už ohlídali a mysleli na to sami.

 
Odpovědět 27.3.2018 14:08
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Josef Pospíšil
pocitac770:27.3.2018 16:42

Ono je to hlavně proto, že se na to ptají hlavně ti co jenom bezmyšlenkovitě opisují kód, a nepřemýšlí nad tím + pořádně nečtou články, viz minulá lekce

Editováno 27.3.2018 16:43
 
Odpovědět 27.3.2018 16:42
Avatar
Jarick
Člen
Avatar
Jarick:3.4.2018 18:54

Ahoj. Předpokládám, že typ double umí pracovat i s celými čísli. Jaký mám tedy důvod použít např. int pro celá čísla, když mohu použít double pro celá i desetinná? Vyhnu se tím případnému parsování na double.

 
Odpovědět 3.4.2018 18:54
Avatar
Odpovídá na Jarick
Michal Šmahel:4.4.2018 14:00

Ahoj, vysvětlení může být vícero.

Jeden z důvodů je přehlednost. Když si to tak vezmeš, můžeš rovnou použít i String, do něhož lze uložit vše (po přeparsování). Samozřejmě to v běžném případě neuděláš, protože by s tím bylo moc práce. Také by se rovnou datové typy nemusely využívat vůbec (resp. by byly dynamické). To však v Javě (a jiných jazycích na podobné úrovni, např. C#) není za běžných podmínek možné. Samozřejmě to má svůj důvod - datové typy nevznikly jen tak. Pro tebe jako programátora slouží především proto, aby ses v kódu lépe vyznal a věděl, jaké chování můžeš od určitých proměnných očekávat. V proměnné typu int celé číslo a v jiné typu double reálné s velkým desetinným rozvojem (nebo celé číslo, které se rozsahově nevejde do long).

Poté jsou tu rozsahy a místo, které jednotlivé datové typy zabírají v paměti. Double (primitivní) bude určitě zabírat více místa než int, který má oproti němu daleko menší rozsah. Můžeš tak správnými datovými typy ušetřit místo v paměti.

Pokud si někdo vzpomene na další opodstatnění, budu rád, když mě doplní. Doufám, že jsem trochu pomohl.

Odpovědět  +1 4.4.2018 14:00
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Jarick
Člen
Avatar
Odpovídá na Michal Šmahel
Jarick:6.4.2018 11:37

Díky. Ještě jsem čekal, za nějaký další názor. Pokud to tedy dobře chápu, tak na funkčnost to nemá vliv. Rozdíl je poznat až při tvorbě větších projektů, kvůli paměti. Je jasné, že je lepší se to učit se správnými typy proměnných. Jen jsem chtěl vědět, zda to má i nějaký hlubší smysl.

 
Odpovědět 6.4.2018 11:37
Avatar
Jakub Exner
Člen
Avatar
Jakub Exner:3.5.2018 0:13

Zdravím, moc rád bych se zeptal u příkladu Length(). Jak do kodu aplikuji i Trim() ? Rád bych aby mi to třeba u toho jména počítalo jen znaky bez mezer.
Zkoušel jsem první co mě napadlo a to zvlášť to naparsovat a toho použít Trim(). Hazí mi to chybu, takže je to blbost. Jsem začátečník. Díky moc.

System.out.prin­tln("Zadejte vaše jméno .");
String jmeno = sc.nextLine();
int a = Integer.parse­Int(jmeno.trim());
System.out.prin­tf("Délka vašeho jména je %d " , jmeno.length());

 
Odpovědět 3.5.2018 0:13
Avatar
Odpovídá na Jakub Exner
Miroslav Bejlek:22.5.2018 17:08

Ahoj, nejsem odborník, ale pokud ti jde jen o délku napsaného řetězce bez prázdných mezer, napsal bych to spíše:
System.out.prin­tln("Zadejte vaše jméno: ");
String jmeno = sc.nextLine()­.trim();
System.out.for­mat("Délka vašeho jména je: %d", jmeno.length());

sc.nextLine()­.trim() je jenom spojování příkazů, prosím o opravu, pokud to chápu špatně.

Díky

 
Odpovědět  +2 22.5.2018 17:08
Avatar
Ondra-ovce
Člen
Avatar
Ondra-ovce:26.7.2018 8:38

Rozhodně mi to pomohlo, děkuji-vytvořil jsem ze znalostí 1-4 lekce tohle:
Jenom mi tam chybí složené závorky.

Editováno 26.7.2018 8:39
 
Odpovědět 26.7.2018 8:38
Avatar
Monika Badačová:7.8.2018 20:27

super :) veľmi zrozumiteľne napísané, ďakujem

 
Odpovědět 7.8.2018 20:27
Avatar
Odpovídá na Ondra-ovce
Miroslav Bejlek:8.8.2018 8:48

Ahoj,
v názvu třídy nepoužívej háčky ani čárky, název balíku takto ne, vždy se do hierarchicky dělí tečkami.
nevím proč jsi zavedl proměnnou boolean avětšínežb , pokud chceš tuto proměnnou pak alespoň aVetsiNezB a hlavně bez diakritiky, navíc tuto proměnnou nepoužíváš, takže je tam na nic.
IF a ELSE
kód máš zbytečně chaotický, daleko lepší je:
if (a > b)
System.out.format ("Platí, že %f > %f" a, b)
else
System.out.format ("Neplatí, že %f > %f" a, b)

Pokud jsem uvedl něco nepřesně, prosím o opravu.

 
Odpovědět  +1 8.8.2018 8:48
Avatar
Jindřich Máca
Tým ITnetwork
Avatar
Odpovídá na Miroslav Bejlek
Jindřich Máca:8.8.2018 12:29

Ahoj, píšeš to dobře, jenom jsi zapomněl na středníky. :-)

Také je lepší používat i v komentářích formátování kódu. Např.:

if (a > b) System.out.printf("Platí, že %f > %f\n", a, b);
else System.out.printf("Neplatí, že %f > %f\n", a, b);

Vypadá a čte se to pak mnohem lépe. ;-)

Editováno 8.8.2018 12:32
 
Odpovědět 8.8.2018 12:29
Avatar
Odpovídá na Jindřich Máca
Miroslav Bejlek:8.8.2018 12:33

Ahoj, díky, zapomněl jsem na středníky :-) Základní chyba

 
Odpovědět 8.8.2018 12:33
Avatar
Mija
Člen
Avatar
Mija:29.9.2018 16:17

Trochu mě zarazilo, že u Format() píšeme:

String s = String.format("Když sečteme %d a %d, dostaneme %d.", a, b, c); resp. to slovíčko String před .format . Nacpala bych tam s.format(), když už mám ten textový řetězec pojmenovaný "s".

Vycházím z principu viz další datové typy např.:

String s = "Krokonoshroch";
System.out.prin­tln(s.startsWit­h("krok"));

nebo

String o = sc.nextLine();
System.out.prin­tln("Text po funkci trim: " + o.trim());

String jmeno = sc.nextLine();
System.out.prin­tf("Délka vašeho jména je: %d.", jmeno.length());

No nějaký důvod to jistě bude mít :-). Jinak tyhle stránky jsou fakt super. Je to naspané jasně a logicky. Díky moc.

 
Odpovědět 29.9.2018 16:17
Avatar
pocitac770
Redaktor
Avatar
Odpovídá na Mija
pocitac770:29.9.2018 22:47

U těch příkladů, které jsi uvedla tak vždy pracuješ nějak s tou proměnnou, proto voláš metodu na ní.
Ovšem když používáš String.format, tak vytváříš "z ničeho" nový String dle zadaného předpisu, proto voláš tu metodu na třídě String.
Později to pochopíš lépe, snad ti to zatím jako vysvětlení stačí, lepší než "prostě to tak je" :)

 
Odpovědět 29.9.2018 22:47
Avatar
Ernest Kuki
Člen
Avatar
Ernest Kuki:10.10.2018 15:23

Ahoj, pomohl by mi někdo s tímhle?

package volaninastring;
import java.util.Scanner;
public class VolaniNaString {

    public static void main(String[] args) {
System.out.println("Zadejte číslo:");
    String s = sc.nextLine();
    System.out.println("Zadal jste text: " + s);
    System.out.println("Text po funkci trim: " + s.trim());
    int a = Integer.parseInt(s.trim());
    System.out.println("Převedl jsem zadaný text na číslo parsováním, zadal jste: " + a);

}

Dělám to přesně podle návodu, ale Netbeans je nejakej šílenej. Furt mi ukazuje, že je chyba u načtení vstupu uživatele. Podtrhává furt to SC

 
Odpovědět 10.10.2018 15:23
Avatar
Ernest Kuki
Člen
Avatar
Odpovídá na Ernest Kuki
Ernest Kuki:10.10.2018 15:32

Už jsem na to přišel. Vypustil jsem

Scanner sc = new Scanner(System.in, "Windows-1250");
 
Odpovědět 10.10.2018 15:32
Avatar
Karel Klíč
Člen
Avatar
Karel Klíč:17.10.2018 11:28

Dobrý den, máte tu chybu ve cvičení Trim vám chybí inicializace Scanneru. Tedy Scanner sc = new Scanner(System­.in,"UTF-8"); Jestli chybu opravíte smažte prosím můj komentář. Pokud totiž nezaložíte proměnou pro objekt Scanner, jak používáte sc a potom voláte sc.nextLine(); tak vám na eclipse nebo netbeans vyhubuje. Lépe to zatím neumím vysvětlit. S pozdravem Karel Klíč.

 
Odpovědět 17.10.2018 11:28
Avatar
Karel Klíč
Člen
Avatar
Karel Klíč:17.10.2018 14:55

Zase ta samá syntaktická chyba u cvičení s referenčním datovým typem length vám chybí založení proměnné pro Scanner, buď ji máte založenou objektově že je zdroják spustitelný ale pokud program zkopírujete nejede protože není založená proměnná sc pro Scanner. Stačí dopsat Scanner sc = new Scanner(System­.in,"Windows-1250"); nebo Scanner sc = new Scanner(System­.in,"UTF-8");

 
Odpovědět  +1 17.10.2018 14:55
Avatar
Tomáš Vavřík:21.10.2018 17:11

Díky, moc pomohlo, fakt pěkně napsané! :)

 
Odpovědět 21.10.2018 17:11
Avatar
Radovan Seget:28.10.2018 14:36

zatím vše v pohodě chápu a značím si ... opravdu pěkně napsané, snad to tak bude i dál ;-)

 
Odpovědět 28.10.2018 14:36
Avatar
Feri Laky
Člen
Avatar
Feri Laky:17. ledna 18:36

Zatím jsem spokojenej, vynechal jsem více než rok a je to cítit! Pokud se člověk něčemu naučí, je potřeba to neustále procvičovat,
škoda vyplytvané energie. a času.
Děkuji za seriál

 
Odpovědět 17. ledna 18:36
Avatar
Odpovídá na Feri Laky
Josef Pospíšil:22. ledna 20:45

Taky začínám s rekapitulací po delší době.

 
Odpovědět 22. ledna 20:45
Avatar
Michal Vlasák:7. února 8:31

Jen takové upozornění na základě vlastní zkušenosti. Pokud používáte NetBeans, nepojmenovávejte si projekt podle datových typů. Např. jako já teď jsem si pojmenoval projekt "String". Dojde tam pak ke kolizi tříd. Vytvoří to třídu String ve vašem projektu a pak má java v sobě definovanou třídu pod stejným názvem. Pak se ta kolize musí v těle řešit: java.lang.String s = "krokonosohroch"; a to mi přijde zbytečné.

Odpovědět  +1 7. února 8:31
"It doesn't work! I hate programming!" - One hour later: "It works! I love programming!"
Avatar
Martin Kubelka:6. března 22:09

Začíná přituhovat. Pěkně popsané.

 
Odpovědět 6. března 22:09
Avatar
Wendy
Člen
Avatar
Wendy:31. července 20:08

Můžete mi prosím poradit, proč to nevypadá takhle:

Když sečtu 10 a 20, dostanu 30
Když sečnu 41,50 a 4,25, dostanu 45,75

...ale vyplivne mi to:

Když sečtu 10 a 20, dostanu 30Když sečnu 41,50 a 4,25, dostanu 45,75

Stává se mi to jen, když použiju System.out.printf()

Díky.

 
Odpovědět 31. července 20:08
Avatar
Wendy
Člen
Avatar
Wendy:31. července 20:16

Vyřešila jsem to uzavřením } a další jsem dala do nové {
...nevím, jak moc je tohle řešení elegantní nebo správné, ale funguje to :) Budu ráda za komentáře.

 
Odpovědět 31. července 20:16
Avatar
Odpovídá na Wendy
Erik Hawlasek:31. července 20:57

Ahoj, no to bude proto, že to není odřádkované. Takže se to dá řešit takto: "...sečtu %d a %d, dostanu %d \nKdyž...". \n značí tzv. novou linku. Dalo by se to řešit i pomocí dvou System.out.prin­tln("První výpis") a System.out.prin­tln("Druhý výpis"). Pokud jsem nepomohl tak pošli zdroják. :-)

Odpovědět 31. července 20:57
Za zeptání nic nedáš.
Avatar
Víťa Š.
Člen
Avatar
Víťa Š.:26. srpna 17:29

Přehledně a jasně popsáno. Spokojenost 100 %

Odpovědět 26. srpna 17:29
Život by byl mnohem snazší, kdybychom k němu měli zdrojový kód.
Avatar
Víťa Š.
Člen
Avatar
Víťa Š.:26. srpna 18:06

Výuka perfektní. Škoda, že od 4. lekce testů k získání certifikátu je to za peníze nebo za body, které nemám. Na distancne.cz mají zadarmo certifikáty SQL a PHP aj.

Odpovědět 26. srpna 18:06
Život by byl mnohem snazší, kdybychom k němu měli zdrojový kód.
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 141 zpráv z 141.