IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Pole v Javě

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Petr.M
Člen
Avatar
Petr.M:10.11.2013 23:29

Prosím o radu ve dvou věcech:

  1. Když do pole dosadím ručně prvky přes složenou závorku, určím tím jeho velikost? Při spuštění níže uvedeného pokusu mi to vypsalo 3 čísla a pak nahlásilo chybu.
  2. Když přiřadím hodnotu k indexu ve vnitřním bloku, tak mi to narozdíl od proměnné uchová tuto hodnotu i mimo vnitřní blok. Je to díky tomu, že pole bylo deklarováno mimo vnitřní blok?
package java_27;

public class Java_27 {

        public static void main(String[] args) {
                // TODO Auto-generated method stub

                int[] pole = {100, 50, 25}; // chyba! Určil jsem už velikost pole?
                for(int i = 0; i < 10; i++)
                        {
                        pole[i] = i * 2;
                        System.out.print(pole[i] + " ");
                        }
                System.out.print(pole[3]); // ověření, že se uchová hodnota, která byla přiřazena v bloku
                System.out.println();
                for(int a : pole)  // test foreach
                        {
                        System.out.print(a);
                        }

        }

}

Omlouvám se předem, dost možná, že to jsou hodně laické dotazy..

Editováno 10.11.2013 23:30
Odpovědět
10.11.2013 23:29
Sometimes you just do things. - Scott Jurek
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Petr.M
Kit:10.11.2013 23:47

1. Ano

int[] pole = {100, 50, 25};

vytvoří tříprvkové pole a naplní hodnotami.

2. Následný cyklus for je vhodnější napsat jinak:

for (int i = 0; i < pole.length; i++) {
    pole[i] = i * 2;
    System.out.print(pole[i] + " ");
}

Nemůže se ti pak stát, že šlápneš mimo hranice pole i když jeho velikost změníš.

3.

System.out.print(pole[3]);

nemůže fungovat, protože pole má jen 3 prvky - s indexy 0, 1, 2. Položka s indexem 3 neexistuje a proto příkaz vyhodí výjimku.

4. Ještě drobnost:

// TODO ...

jsi už splnil, tento řádek s komentářem tedy můžeš smazat. Používá se to pro poznámky, že v daném místě máš něco udělat. Dobře se to pak v projektu hledá, ale splněná TODO se musí likvidovat, aby plnily funkci.

Editováno 10.11.2013 23:52
Nahoru Odpovědět
10.11.2013 23:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr.M
Člen
Avatar
Odpovídá na Kit
Petr.M:11.11.2013 10:09

Díky za vyčerpávající odpověď.
Ad2.Předtím jsem pole plnil za použití cyklu jak uvádíš ve 2., ale zkoušel jsem experimentovat. Ono je to vlastně logické, když pole naplním několika hodnotami, že ty určí jeho velikost, jinak by vlastně mohlo vzniknout pole o neznámé velikosti.
Ad3. tento příkaz tam zůstal z předchozího pokusu, kdy byla dosazena hodnota do indexu 3.
Ad4. Jsem debil :) myslel jsem, že TODO je zkratka něčeho tajemného :) a ne to do..šikovná pomoc

Nahoru Odpovědět
11.11.2013 10:09
Sometimes you just do things. - Scott Jurek
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Petr.M
Kit:11.11.2013 10:59

ad4: Pokud jsi v příkazovém řádku a v adresáři s projektem, tak příkaz

grep -r TODO *.java

ti vyhledá, co ještě není v projektu hotovo. IDE to obvykle umí najít také, i když s tím asi pracuje trochu jinak.

Nahoru Odpovědět
11.11.2013 10:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
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 4 zpráv z 4.