Gyakorlati alapok II.

Kalmárkodjunk! (EUR-HUF váltó)

 

Nem bonyolult, egyúttal érdekes program az alábbi pénzváltó: néhány bemeneti adat megadásával pontos és hatékony HUF-EUR váltó Java-alkalmazás kerekíthető belőle. Ezek a bemeneti adatok:

Az aktuális árfolyamot kézzel kell beírnunk...

 

double veteliEuroArfolyam = 303;
double eladasiEuroArfolyam = 321;

 

...de természetesen a későbbiekben látni fogjuk, hogy automatizálhatjuk is.

 

A programban semmi programozás-technikai különlegesség nincs, kivéve egyet. A szamBekeres() függvény ellenőrzi le a felhasználótól bekért pénzösszeg helyességét.

 

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

 

Végeredményben tökéletesen mindegy, hogy EUR vagy HUF kerül a függvénybe, mindkettőnek 2 alapkövetelménye van:

  1. az összeg nem lehet 0 vagy annál kisebb,

  2. nem kerülhet a rendszerbe nem numerikus karakter.

Ezt a kötelező ellenőrzést sokféleképpen implementálhatjuk, most azonban a kivételkezeléssel fogunk elbabrálni: ha a JVM dob egy NumberFormatException kivételt, akkor tudjuk, hogy a felhasználó rossz, nem numerikus karaktereket adott meg, amelyet a JVM képtelen volt számmá konvertálni. Ettől függetlenül a try-catch blokkpár felhasználásával elkaptuk a problémát:

 

do{
    String szamString = olvaso.nextLine();
    try{
        szam = Integer.parseInt(szamString);
    }

    catch (NumberFormatException nfx) {
        System.out.println("Hiba történt adatbevitelkor!");
        szam = -1;
    }
}while (szam < 0);

 

Ugyanakkor a main() függvényben lévő bekérés biztosítja, hogy az adatbevitelt meg lehessen ismételni.

 

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

 

 

 

 

 

 

 

 

import java.util.Scanner;

public class Main {

public static double szamBekeres() {
    Scanner olvaso = new Scanner(System.in);
    double szam = 0;
    do{
        String szamString = olvaso.nextLine();
        try{
            szam = Integer.parseInt(szamString);
        }

        catch (NumberFormatException nfx) {
            System.out.println("Hiba történt adatbevitelkor!");
            szam = -1;
        }
    }while (szam < 0);
    return szam;
}

public static void main(String[] args) {
    Scanner olvaso = new Scanner(System.in);
    double veteliEuroArfolyam = 303;
    double eladasiEuroArfolyam = 321;
    double eladasiEuro = 0;

    while(true) {
        System.out.println("Kérem válasszon az alábbi lehetőségekből:");
            System.out.println("HUF-eladás -> EUR-vétel(1) - EUR-eladás -> HUF vétel(2) - Kilépés(3)");

        String valasztas = olvaso.nextLine();

        if ("1".equals(valasztas)) {
            System.out.println("Kérem, hogy adja meg az összeget (HUF)!");
            double eladasiForint = szamBekeres();
            eladasiEuro = eladasiForint / eladasiEuroArfolyam;
            double maradek = eladasiForint % eladasiEuroArfolyam;
            System.out.println("Ön " + eladasiForint + " HUF-ért " + eladasiEuro

                                      + " EUR-t fog kapni, a maradék pedig " + maradek + " HUF lesz.");
            System.out.println();
        }
        if ("2".equals(valasztas)) {
            System.out.println ("Kérem, hogy adja meg az összeget (EUR)!");
            eladasiEuro = szamBekeres();
            double veteliForint = 0;
            veteliForint = eladasiEuro * veteliEuroArfolyam;
            System.out.println("Ön " + eladasiEuro + " EUR-ért " + veteliForint + " HUF-t fog kapni.");
            System.out.println();
        }
        if ("3".equals(valasztas) {
            System.out.println("\nViszlát!");
            System.exit(0);
            }
        }
    }
}

 

Végeredmény:

Kérem válasszon az alábbi lehetőségekből:
HUF-eladás -> EUR-vétel(1) - EUR-eladás -> HUF vétel(2) - Kilépés(3)
1
Kérem, hogy adja meg az összeget (HUF)!
30300
Ön 30300.0 HUF-ért 94.39252336448598 EUR-t fog kapni, a maradék pedig 126.0 HUF lesz.

Kérem válasszon az alábbi lehetőségekből:
HUF-eladás -> EUR-vétel(1) - EUR-eladás -> HUF vétel(2) - Kilépés(3)
1
Kérem, hogy adja meg az összeget (HUF)!
32100
Ön 32100.0 HUF-ért 100.0 EUR-t fog kapni, a maradék pedig 0.0 HUF lesz.

Kérem válasszon az alábbi lehetőségekből:
HUF-eladás -> EUR-vétel(1) - EUR-eladás -> HUF vétel(2) - Kilépés(3)
2
Kérjük adja meg az összeget (EUR)!
1000
Ön 1000.0 EUR-ért 303000.0 HUF-t fog kapni.

Kérem válasszon az alábbi lehetőségekből:
HUF-eladás -> EUR-vétel(1) - EUR-eladás -> HUF vétel(2) - Kilépés(3)
3
 

Viszlát!