Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 12. diel - Pole v Jave

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Miroslav Melzer:12.10.2016 10:54

To založení nového pole pomocí slova "new" se tedy týká jen a pouze "intových" polí?

Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Miroslav Melzer
pocitac770:12.10.2016 13:22

Ne, to new se váže na pole, a to ať má jakýkoliv datový typ

Avatar
Miroslav Melzer:28.10.2016 16:11

Potřeboval bych prosím vysvětlit pár drobností.

int[] pole = new int[10];
pole[0] = 1;
for (int i = 0; i < 10; i++)
        pole[i] = i + 1;

jak přesně, nebo co tady znamená to pole[i] v posledním řádku? Něco jako že to platí pro všechny prvky pole, že přistupujem hromadně ke všem prvkům ?
Druhá věc je v té proměnné delce pole.

System.out.printf("Zadejte %d. číslo: ", i + 1);
       cisla[i] = Integer.parseInt(sc.nextLine());

Tady to znamená co, to cisla [i] ? Že se to pole plní čísly od uživatele ?
A naposled nechápu proč když se použije "pole.length " , tak pro výpis potom "pole [i]"

for (int i = 0; i < pole.length; i++)
        System.out.printf("%d ", pole[i]);

a když for each cyklus tak jen "i"

for (int i : pole)
        System.out.printf("%d ", i);

Případný vysvětlení prosím spíš tak trochu jako pro debila....

Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Miroslav Melzer
pocitac770:28.10.2016 17:07

Jde ne o nepochopení pole, ale cyklů (tedy si to radši ještě jednou pročti).
U klasického for cyklu je to "i" proměnná přes kterou řídíme iteraci (procházení), ta se nám logicky (podle nastavených pravidel) postupně zvyšuje, pokaždé toho využijeme a použijeme tu hodnotu. Představ si to tak, že vždy místo toho "i" dosadíš číslo, pokolikáté se to už dělá (začínaje nulou).
Proměnná ve foreach funguje trochu jinak, tam jí nijak nekontrolujeme, vždy se nám dosadí přímo ona hodnota, co je v poli (takže např nemáme jak zjistit, kolikátý prvek to je, nemůžeme ho tedy ani nahradit), je to takové "zjednodušení" pro pouhé procházení pole.

Avatar
Miroslav Melzer:28.10.2016 19:39

Dík, to "i" v těch cyklech mi pořád přijde nějaký divný......

Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Miroslav Melzer
pocitac770:28.10.2016 20:45

Jde o normální proměnnou, zde například typu int (v foreach cyklu při procházení Simpsonů je použit String kvůli typu objektů v poli), kde v klasickém for cyklu s ní nějak pracuješ ty (jako třetí člen v závorce je to, co se má udělat na konci každé iterace, to že je zde i++ neznamená, že tam nemůže být třeba "i = i * 5 - 2", taktéž ji můžeš upravit třeba někde uvnitř bloku).
Ve foreach už s tím nic nemůžeme dělat, protože to ani nemá smysl, v tu chvíli je to proměnná, jejíž obsah při každé iteraci upraví sama Java, aby byl roven dalšímu prvku v poli.

Avatar
Miroslav Melzer:1.11.2016 20:04

Jakým způsobem bych naplnil pole desetinnými čísly ? Nebo kdybych chtěl zvyšovat hodnotu o třeba 0.1 ?

Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Miroslav Melzer
pocitac770:2.11.2016 7:20

Máš to přesně napsáno v mém předchozím komentáři, stačí číst

Jde o normální proměnnou, zde například typu int

Ano, můžeš použít double

to že je zde i++ neznamená, že tam nemůže být třeba "i = i * 5 - 2"

No, tohle mluví samo za vše

Případně, pokud ti to přijde složité, tak můžeš použít nějakou proměnnou mimo cyklus, a vždy ji v každé iteraci upravit o onu hodnotu, ale jde o úplně to samé

Editované
Avatar
Miroslav Melzer:2.11.2016 19:14

Proč to nefunguje takhle: ?

double[] pole= new double [10];
     for (double i = 0; i<10; i++)
         pole[i] =  i + 0.1;
     for(double i :pole)
       System.out.printf("%f ", i);

       float [] pole = new float[10];
       for(float i=0F; i<10F; i++)
           pole[i] = i + 0.1;
       for(float i :pole)
           System.out.printf("%f",i);
Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Miroslav Melzer
pocitac770:2.11.2016 21:32

Protože... Když máš pole, co má 10 míst, tak ho musíš naplnit 10 prvky. A pokud budeš přičítat pořád 0.1 tak

  1. Kolikrát proběhne iterace? No přeci 100x
  2. Jaké indexy to bude vybírat? Ano, i desetinné

V tuto chvíli, ok, spíš jsem se ti snažil odpovědět na konkrétní otázky než na celek, když dojde na realizaci, tak je to už o přemýšlení...
Pokud chceš přes tu samou proměnnou zároveň přistupovat k indexu, a zároveň přičítat k hodnotě, aby jsi pole plnilpo desetinách, tak si budeš muset udělat nějaký konvektor.
Např. budeš mít řídící proměnnou typu int, klasicky přičítat i++, a když budeš potřebovat hodnotu, tak si ji vezmeš jako i/10. Nebo naopak, budeš mít řídící proměnnou double, a budeš si vždy brát index jako i*10.

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 222.