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: 1
Je 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: 7
Ješ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.