Doposud jsme zapisovali celý program do metody
main. Pokud bylo třeba provést stejnou
posloupnost příkazů na více místech, museli jsme tyto příkazy
zopakovat. Tomu se lze vyhnout. Metody nám umožňují členit kód do
logických celků a tyto celky opakovaně využívat. V této kapitole
budeme pod pojmem metoda rozumět statickou metodu. Jednu statickou
metodu již známe. Je to metoda main.
Kromě metody main můžeme ve třídě
deklarovat i další metody, např. metodu pro tisk informací
o programu.
Deklarace statické metody začíná klíčovým slovem
static. Za ním následuje návratový typ
a jméno metody. Návratovým typem může být libovolný javovský typ.
Pokud metoda nevrací žádnou hodnotu, uvedeme jako návratový typ
void. Jméno metody obvykle začíná malým
písmenem. Pokud se jméno skládá z více slov, oddělujeme slova tak,
že první písmena dalších slov píšeme velká. Např.
spoctiPolomerKruzniceOpsane. Není zvykem
používat ve jméně metody podtržítka. Za jménem metody je
v závorkách seznam parametrů. Seznam parametrů je tvořen
deklaracemi proměnných. Oddělovačem deklarací v seznamu parametrů
je čárka.
V místě, kde chceme metodu provést, zapíšeme volání metody. Volání
metody se skládá ze jména metody a seznamu parametrů. Návratovou
hodnotou metody bude hodnota výrazu, který je uveden za příkazem
return.
Na pořadí, v němž metody deklarujeme, nezáleží. Lze volat i metodu,
která je deklarována později.
class HlavniTrida {
public static void main( String[] args ) {
Scanner sc = new Scanner( System.in );
int x = sc.nextInt();
long faktorial = spoctiFaktorial( x );
System.out.printf( "%d! = %d%n", x, faktorial );
}
static long spoctiFaktorial( int n ) {
long fakt = 1;
for( ; n > 1; n-- ) {
fakt *= n;
}
return fakt;
}
}
V metodě typu void lze použít příkaz
return bez parametrů. Toho se využívá
pro předčasné ukončení metody.
// vytiskne obdélník a x b ze znaků @
static void vytiskniObdelnik( int a, int b ) {
// minimální velikost strany obdélníka je 2
if( a < 2 || b < 2 ) {
return;
}
for( ; a > 0; a-- ) {
for( int i = 0; i < b; i++ ) {
System.out.print( '@' );
}
System.out.pritln();
}
}
Příkaz return se může v metodě vyskytovat
vícekrát. Provede se však vždy jen jednou jako poslední příkaz
metody. Jeho provedení způsobí okamžité ukončení metody.
static boolean jePrvocislo( int n ) {
if( n == 2 ) { // 2 je prvočíslo
return true;
}
if( n % 2 == 0 ) {
// sudé číslo není prvočíslo (kromě 2)
return false;
}
int odmocnina = (int) Math.sqrt( n );
for( int i = 3; i <= odmocnina; i += 2 ) {
if( n % i == 0 ) {
// našli jsme dělitele, tudíž n není prvočíslo
return false;
}
}
return true;
}