Diskuze: Pole
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.


pole[0][0] = 1;Nemůžeš měnit hodnoty proměnných mimo metody, teda aspoň NetBeans se to nelíbilo. Nejjednodušší to bude dát do konstruktoru.
Ahoj, tak jak psal Neaktivní uživatel, problém je v tom, že modifikuješ proměnnou mimo metodu. Pokud používáš nějaké vývojové prostředí, mělo by tě na to upozornit (to že ti to nejde zkompilovat je výsledek chyby v kódu).
Řešení:
public class Citaj {
        public int vyska, sirka;
        public int[][] pole = new int[1][1];
        public Citaj() {
                this.pole[0][0] = 1;
        }
        public void vypis() {
                System.out.println("pole je: " + pole[0][0]);
        }
}Nyní ti to sice půjde zkompilovat, ale výsledkem programu bude vždy (bez ohledu na to, co načteš pomocí Scanner):
pole je: 1Je to z toho důvodu, že v metodě main přiřazuješ hodnoty proměnným sirka a vyska, ale metodou Citaj#vypis() vypisuje hodnotu proměnné pole na indexu [0][0]. Tam je defaultně vložen integer 1. Upřímně řečeno, pole vůbec nepotřebuješ, protože objekt Citaj obsahuje property sirka a vyska, kterému nastavuješ hodnotu dle toho, co je načteno pomocí Scanner.
Řešení:
Třída Hlava.java zůstává stejná.
Třída Citaj.java
public class Citaj {
        public int vyska;
        public int sirka;
        public void vypis() {
                System.out.println("šířka je: " + sirka + ", výška je: " + vyska);
        }
}Výstup:
7
5
šířka je: 5, výška je: 7Ještě bych doporučil nepoužívat přímý přístup k proměnným sirka a vyska, ale pomocí public metod set a get a proměnné nastavit na private (zapouzdřit).
Řešení:
Citaj.java
public class Citaj {
        private int vyska;
        private int sirka;
        public void vypis() {
                System.out.println("šířka je: " + sirka + ", výška je: " + vyska);
        }
        public int getVyska() {
                return vyska;
        }
        public void setVyska(int vyska) {
                this.vyska = vyska;
        }
        public int getSirka() {
                return sirka;
        }
        public void setSirka(int sirka) {
                this.sirka = sirka;
        }
}Hlava.java
public class Hlava {
        public static void main(String[] args) {
                Citaj cit = new Citaj();
                Scanner sc = new Scanner(System.in);
                // Výšku a šířku setuji pomocí metod.
                cit.setVyska(sc.nextInt());
                cit.setSirka(sc.nextInt());
                cit.vypis();
        }
}Zobrazeno 4 zpráv z 4.
