Do příště
- nainstalujte si Eclipse IDE
choco install eclipse
Datový typ boolean
- umí 2 hodnoty -
true
,false
- výsledky porovnání atd.
boolean jeSude = (cislo % 2) == 0; // funkčně stejné jako if ((cislo % 2) == 0) { if (jeSude) { // totéž co if (jeSude == true) ... } if (!jeSude) { // totéž co if (jeSude == false) ... }
while
cyklus
- pokud nevíme dopředu počet opakování
public class WhileCyklus { public static void main(String[] args) { int i = Integer.parseInt(args[0]); while (i > 0) { System.out.printf("%d\n", i); i--; } } }
java.util.Scanner
: načítání vstupu z klávesnice
- (zatím z klávesnice, později uvidíme, že lze použít i nad soubory)
- pro zkušenější: dokumentace Scanneru
public class Suma { public static void main(String[] args) { int suma = 0; /* Tohle je zatím trochu magie, vysvětlím později ;-). */ java.util.Scanner sc = new java.util.Scanner(System.in); while (sc.hasNextInt()) { suma += sc.nextInt(); } System.out.printf("Soucet zadanych cisel je %d.\n", suma); } }
- funkce
hasNextInt()
nad proměnnou typuScanner
řekne, je-li na vstupu další číslo - a funkce
nextInt()
nám ho řekne - vstup ukončíme stiskem
Ctrl+Z
na samostatné řádce (opět nutné potvrdit stiskem Enteru) (na Unixu stačíCtrl+D
kdekoliv) - dokud není celý řádek odeslán (Enterem), je možné ho upravovat (resp. jen mazat)
Předčasná ukončení cyklů
- příkaz
break
ihned ukončí cyklus, skočí za jeho uzavírací závorku - příkaz
continue
pokračuje další obrátkou cyklu
Následující kus kód by bez break
a continue
byl náročnější na pochopení.
int suma = 0; int pocet = 0; while (scanner.hasNextInt()) { int cislo = scanner.nextInt(); if (cislo == 0) { // Uživatel zadal 0 ==> končíme break; } if (cislo < 0) { // Záporná čísla ignorujeme. System.out.printf("Preskakuji %d\n", cislo); continue; } System.out.printf("Zadane kladne cislo je %d.\n", cislo); suma += cislo; pocet++; }
Protože je nutné konstruovat složité (a vnořené) podmínky.
int suma = 0; int pocet = 0; boolean pokracujeme = true; while (pokracujeme && scanner.hasNextInt()) { int cislo = scanner.nextInt(); if (cislo == 0) { // Uživatel zadal 0 ==> končíme pokracujeme = false; } else { if (cislo < 0) { // Záporná čísla ignorujeme. System.out.printf("Preskakuji %d\n", cislo); } else { System.out.printf("Zadane kladne cislo je %d.\n", cislo); suma += cislo; pocet++; } } }