Diskuze: Pole v Javě

Java Java Pole v Javě

Avatar
Petr.Matras
Člen
Avatar
Petr.Matras:

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
Redaktor
Avatar
Odpovídá na Petr.Matras
Kit:

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  +1 10.11.2013 23:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Petr.Matras
Člen
Avatar
Odpovídá na Kit
Petr.Matras:

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
Redaktor
Avatar
Odpovídá na Petr.Matras
Kit:

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.