Gyakorlati alapok

Feltételvizsgálat egyszerűbben

 

Az előző, Az állapotjelzők (flag) című fejezet ismertette a legtöbbször boolean típusban használt flag-ek, állapotjelzők funkcióját, kezelését. Ebben a rövid fejezetben csupán ezen állapotjelzők egyszerűsített használatára szeretném felhívni a figyelmet. Induljunk ki a prímszámkeresés már ismertetett algoritmusából:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


import java.util.Scanner;
import java.math.*;

public class Main {
    public static void main(String[] args) {
    int szam;
    boolean prim = true;
    Scanner in = new Scanner(System.in);
    System.out.println("Kérem, hogy gépelje be a számot (0 és 1 nem prímszám)!");
    szam = in.nextInt();
    if (szam == 1 || szam == 0 || szam % 2 == 0){
        System.out.println(szam + " nem prímszám!");
        prim = false;
    }
    else
        for (int j = 2; j <= Math.sqrt(szam); j++){
            if (szam % j == 0){
            prim = false;
            System.out.println(szam + " nem prímszám!");
            break;
        }
    }
    if(prim == true)
        System.out.print(szam + " prímszám");
    }
}

 

Végeredmény (például):

Kérem, hogy gépelje be a számot (0 és 1 nem prímszám)!
23
23 prímszám

 

A boolean típusú prim változó értékadása több helyen is megtörténik, sőt az algoritmus végén van 1 fontos értékvizsgálat is:

 

if(prim == true)

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Általános programozás-technikai konvenció, hogy boolean típusnál a fenti helyett egyszerűsített értékvizsgálatot használunk-használhatunk:

 

if(prim)

 

A 2 értékvizsgálat hatása ugyanaz, ebből következően az alábbi, ilyen módon módosított prímszámkeresési algoritmus szintén működőképes:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


import java.util.Scanner;
import java.math.*;

public class Main {
    public static void main(String[] args) {
    int szam;
    boolean prim = true;
    Scanner in = new Scanner(System.in);
    System.out.println("Kérem, hogy gépelje be a számot (0 és 1 nem prímszám)!");
    szam = in.nextInt();
    if (szam == 1 || szam == 0 || szam % 2 == 0){
        System.out.println(szam + " nem prímszám!");
        prim = false;
    }
    else
        for (int j = 2; j <= Math.sqrt(szam); j++){
            if (szam % j == 0){
            prim = false;
            System.out.println(szam + " nem prímszám!");
            break;
        }
    }
    if(prim)
        System.out.print(szam + " prímszám");
    }
}

 

Végeredmény (például):

Kérem, hogy gépelje be a számot (0 és 1 nem prímszám)!
17
17 prímszám

 

További érdekes és alapjában véve nem konvencionális lehetőség, hogy boolean adattípus true és false értékeit felhasználhatjuk deklarálás nélkül is. Alább egy ilyen jellegű, futtatható Java-kódot vizsgálhatunk. A végtelen ciklus hajtómotorja az elöltesztelős while(true) feltétel, bár a  while(false) feltételnek ebben az esetben egyszerűen nincs is értelme, hiszen a cikluson belül elérhetetlen kódot eredményezne (unreachable code). A cikluson belüli folyamatok egészen addig tartanak, amíg azokat a System.exit(0) függvény meg nem szakítja:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 


import java.util.Scanner;

public class Main {
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String[] menu = new String[] {"1 - Kiírás", "0 - Kilépés"};

    while(true){
        System.out.println("\nKérem válasszon az alábbi lehetőségekből: ");
        for(int i = 0; i < menu.length; i++) {
            System.out.println(menu[i]);
        }

        String valasztas = in.nextLine();
        if("1".equals(valasztas)) {
            System.out.println("Jó móka ez a Java-programozás!");
        }

        if("0".equals(valasztas)) {
            System.out.println("\nViszlát!");
            System.exit(0);
            }
        }
    }
}

 

Végeredmény (például):

Kérem válasszon az alábbi lehetőségekből:
1 - Kiírás
0 - Kilépés
X

Kérem válasszon az alábbi lehetőségekből:
1 - Kiírás
0 - Kilépés
1
Jó móka ez a Java-programozás!

Kérem válasszon az alábbi lehetőségekből:
1 - Kiírás
0 - Kilépés
s

Kérem válasszon az alábbi lehetőségekből:
1 - Kiírás
0 - Kilépés
0

Viszlát!