Java Metódusból metódusba?!
/*
Given an integer denoting the size of the array.
Fill the array with integers and sort them to increasing sequence.
After,ignore the two of biggest numbers and copy them to in other array and print out to the console.
*/
public class Main {
public static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int denotingSize = sc.nextInt();
int [] finalArray = fillArrayAndSort(denotingSize);
int [] finalArray3 = secondArray(finalArray);
System.out.println(Arrays.toString(finalArray3));
}
public static int [] fillArrayAndSort(int number){
int [] myArray = new int [number];
for(int i =0; i < myArray.length; i++){
myArray[i] = sc.nextInt();
}Arrays.sort(myArray);
return myArray;
}
public static int [] secondArray(int [] secondArray2){
int denotingSize = sc.nextInt();
secondArray2 = new int [denotingSize];
int max = secondArray2[secondArray2.length-1];
int secondMax = secondArray2[secondArray2.length-2];
int [] finalArray2 = Arrays.copyOf(secondArray2,secondArray2.length-2);
return finalArray2;
}
}
Ez a kód is tele van függvényekkel és függvényhívásokkal.
Egyébként meg olvasd el BÁRMELYIK java tutorial/könyv első 5 leckéjét, benne lesz hogyan kell függvényeket használni.
5
4
8
6
5
4
5
[0, 0, 0]
BUILD SUCCESSFUL (total time: 3 seconds)
[Nem Java, hanem PHP, de a lényeg ugyanaz.]
Na akkor úgy hiszem, ez a kis magyarázat a miértekre jól fog esni neked:
Induljunk ki abból, hogy amit az objektumorientált szemléletmód metódusnak nevez, az két igen egyszerű dologra vezethető vissza, mégpedig a függvényekre és az eljárásokra. Ha megnézzük a napirendedet, az valahogy így fest:
felkelsz
megmosakszol
előveszel egy kiflit
félbevágod
megmikrózod a virslit
a kiflibe beleteszed a virslit
nyomsz rá ketchupot
megeszed
csinálod a többi napi teendőt
előveszel egy kiflit
félbevágod
megmikrózod a virslit
a kiflibe beleteszed a virslit
nyomsz rá mustárt
megeszed
megmosakszol
alszol
Ami így szembetűnik az az, hogy van egy bizonyos részlet, ami ismétlődik, persze el is térhet néhány apróbb részletében. Ezzel így az a gond, hogy kétszer kellett leírnom ugyanazt, kétszer olyan hosszú a kód, és ha egy harmadik helyen is használni szeretném, akkor megint vagy át kell másolnom, vagy meg kell írnom megint ugyanazt. Ez persze rosszabb minőségű kódot eredményez. Gondolj bele, ha valamit változtatni akarsz, azt már rögtön két helyen is át kell írnod. Ilyen esetekben használunk függvényeket illetve eljárásokat.
A függvény és eljárás közt egy hatalmas nagy különbség van. Az eljárás egy cselekvéssorozatot ír le, amelynek során új állapot keletkezhet. A fenti példában is ez történik. Van egy cselekvéssorozat, amely egy összetettebb, bonyolultabb cselekvést ír le, pl. hogyan csinálsz hot-dogot. Ha te ezt végrehajtod, létrejön egy olyan állapot, amelyben már van egy kész hot-dogod, és ha azt megeszed, már nem leszel éhes. De az is egy új állapot, amikor kiírsz valamit a weblapra pl. print-tel vagy echo-val. Az pedig azt az állapotot idézi elő, hogy a szöveg már ki van írva a weblapra.
A függvény pedig az eljárással ellentétben egy számítási módot ír le, amelynek során mindig egy eredmény jön létre (nem több, csak egy). Nos, erre az eredményre ne csak úgy gondolj, hogy az csak egy szám lehet. Lehet bármilyen típusú eredmény, pl. ha adatbázishoz kapcsolódsz, akkor resource típusú eredmény, vagy két szöveg összefűzése esetén egy string típusú eredmény jön létre. A kód futása során ha eredmény áll elő, azt a return vezérlésátadó utasítással jelezheted, és ezután kell megadnod egy kifejezést, hogy mi az eredmény, ami előállt.
Írtam egy olyat az előbb, hogy "van egy bizonyos részlet, ami ismétlődik, persze el is térhet néhány apróbb részletében". Ezek az apróbb eltérések lesznek a függvény vagy eljárás paraméterei.
hot_dog_evés(mit_nyomok_rá) {
előveszel egy kiflit
félbevágod
megmikrózod a virslit
a kiflibe beleteszed a virslit
nyomsz rá mit_nyomok_rá
megeszed
}
felkelsz
megmosakszol
hot_dog_evés(ketchup)
csinálod a többi napi teendőt
hot_dog_evés(mustár)
megmosakszol
alszol
Egy függvényre vagy eljárásra hivatkozni annak nevével lehet. Ha csak a nevét írod le, az a legtöbb nyelvben azt mondja meg, hogy az a függvény vagy eljárás hol található a memóriában. Ellenben ha paraméterlistát is feltüntetsz utána (Java nyelvben például zárójelet teszel ki), akkor az a függvény vagy eljárás meghívását jelenti. Amikor meghívod a függvényt vagy eljárást, ott abban a pillanatban a paramétereknek értéket is kell adni. Nagyon konyhanyelven egyfajta "behelyettesítés" történik. Persze azért a világ nem ilyen egyszerű, mert a paraméterátadásnak többféle módja is van:
- érték szerinti
- cím szerinti
- eredmény szerinti
- érték-eredmény szerinti
stb. Mindegyiknek más a célja, és nyelvtől függ, melyiket támogatják.
74. oldaltól olvasgasd.
Na és most nézzük PHP esetében, hogy működik ez:
function OsszefuzveKiir($SzovegA, $SzovegB) {
echo $SzovegA . $SzovegB;
}
OsszefuzveKiir("Ez egy ", "teszt szöveg.");
Ez ugye egy eljárás volt és annak a meghívása. Azért volt eljárás, mert csupán egy cselekvéssorozatot ír le, hogy hogyan is lehet két szöveget összefűzve kiírni a képernyőre. Meghívása során pedig egy új állapot jött létre, amelyben már ki van írva a képernyőre az összefűzött szöveg.
function Osszead($A, $B) {
$Eredmeny = $A + $B;
return $Eredmeny;
}
$Osszeg = Osszead(3, 4);
Ez pedig egy függvény volt, mivel egy számítási módot, egy összetettebb műveletet ír le, hogy hogyan is lehet két számot összeadni. Ennek végrehajtása során egy eredmény jött létre, ezt jeleztük a return kulcsszóval. Látható, hogy a hívás helyén valójában egy értékadó utasítás áll. Ez azért van, mert az eredményeket gyakran tárolni szoktuk, mivel más számításokhoz, vagy más eljárások paramétereként szoktuk felhasználni.
Na és most figyelj:
function OsszefuzveKiir($SzovegA, $SzovegB) {
echo $SzovegA . $SzovegB;
return;
echo 'Ezt már nem fogod látni';
}
Eljárások esetében is használhatsz return-t, de annak más célja van. A return utasítás meghívása mind eljárás, mind függvény esetében megszakítja a függvény/eljárás futását. Mivel egy eljárás nem képezhet eredményt, így utána kifejezésnek is tilos állnia. Ezt általában arra használjuk, hogy megszakítsuk az eljárás futását, pl. egy bizonyos feltétel bekövetkezése esetén.
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!