Gyakorlati alapok
Számok oszthatósága
Folytatjuk tovább az előző fejezetben bevezetett logikai döntéshalmazunkat. Ebben a fejezetben alapszinten számok más számokkal való oszthatóságát vizsgáljuk meg és ehhez újfent logikai döntésekre van szükségünk.
1. feladat: találjuk meg meg azon számokat, amelyek oszthatók 2-vel 1 és 50 között. Akik alaposan áttanulmányozták az előző fejezetet, már mosolyognak ezen, hiszen ezt a futtatható Java-kódot már megírtuk páros számok 1 és 50 között néven:
public class Main {
public static void main(String[] args) {
for (int i = 1; i < 50; i++){
if (i % 2 ==
0){
System.out.print(i + " ");
}
}
}
}
Végeredmény:
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48
Ha megértettük a kód belső működését, akkor nem lesz nehéz megoldanunk a 2. feladatot: találjuk meg azon számokat, amelyek oszthatók 3-mal 1 és 50 között:
public class Main {
public static void main(String[] args) {
for (int i = 1; i < 50; i++){
if (i % 3 ==
0){
System.out.print(i + " ");
}
}
}
}
Végeredmény:
3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48
Láthatjuk, hogy voltaképpen csak a feltételben foglalt számértéket kellett átállítanunk:
if (i % 3 == 0)
Most kissé nehezítsük a feltételmegadást!
3. feladat: találjuk meg azon számokat, amelyek oszthatók 2-vel ÉS 3-mal 1 és 50 között. Ekkor a 2 db feltételnek egyszerre kell teljesülnie:
public class Main {
public static void main(String[] args) {
for (int i = 1; i < 50; i++){
if (i % 3 ==
0 && i % 2 == 0){
System.out.print(i + " ");
}
}
}
}
Végeredmény:
6 12 18 24 30 36 42 48
Az ÉS logikai műveletének jele &&, amint azt olvashattuk a Logikai operátorok című fejezetben.
4. feladat: találjuk meg azon számokat, amelyek oszthatók 2-vel VAGY 3-mal 1 és 50 között. Ekkor a 2 feltételnek NEM KELL egyszerre kell teljesülnie, csakis az egyiknek:
public class Main {
public static void main(String[] args) {
for (int i = 1; i < 50; i++){
if (i % 3 ==
0 || i % 2 == 0){
System.out.print(i + " ");
}
}
}
}
Végeredmény:
2 3 4 6 8 9 10 12 14 15 16 18 20 21 22 24 26 27 28 30 32 33 34 36 38 39 40 42 44 45 46 48
A VAGY logikai műveletének jele ||, amint azt olvashattuk a Logikai operátorok című fejezetben.
A fenti kódban észrevehetjük, hogy a VAGY művelete sokkal "lazább", kötetlenebb az ÉS műveletnél, ezért jóval több végeredményt szolgáltat.
Most pedig az 5. feladatban szigorkodjunk tovább a feltételek megadásának szűkítésével!
5. feladat: találjuk meg 1 és 100 között azon számokat, amelyek oszthatók 5-tel ÉS 10-zel ÉS 50 ÉS 60 között vannak (beleértve az 50 ÉS 60-at is). Ekkor a 4 db feltételnek egyszerre kell teljesülnie:
public class Main {
public static void main(String[] args) {
for (int i = 1; i < 100; i++){
if (i % 5 ==
0 && i % 10 == 0 && i <= 60 && i >= 50){
System.out.print(i + " ");
}
}
}
}
Végeredmény:
50 60
A kód legproblematikusabb része a feltételmegadás. Fejtsük meg visszafelé a feltételeket, először az 50 és 60 közötti feltételmegadást tisztázzuk:
i <= 60 && i >= 50
Itt 2 tipikus relációs operátorral szembesülünk, ezek a nagyobb egyenlő (i >= 50) és kisebb egyenlő (i <= 60) operátorok. A feltételmegadás több részével találkoztunk, csak más számokkal:
i % 5 == 0 && i % 10 == 0
A feltételmegadás tehát bár többszörös, de valójában nem oly bonyolult:
i % 5 == 0 && i % 10 == 0 && i <= 60 && i >= 50
A végeredmény egyértelműen mutatja a feltételmegadás szigorú vonását: a követelményeknek csak két szám felel meg:
Végeredmény:
50 60