Gyakorlati alapok

Különutas százalékszámítás

 

A százalékszámítás alapjairól kellő részletességgel a Százalékszámítás egyszerű adatbekéréssel című fejezetben számoltunk be. Ebben a fejezetben a funkciókat  külön függvényekbe illesztjük. Ezek a következők:

A "globális" láthatóság érdekében 3 db bemeneti adatot (köztük 2 db összetett típusú tömb) static jelzővel illetve a Main osztálydeklaráció alatt osztályszintű adattaggá emelünk, ezáltal őket minden metódus látni fogja (még a main() is). Ez roppant hasznos, hiszen az adatokat egyik metódustól a másikig kell átadnunk, ezért nem szükséges több változódeklarálást elvégeznünk.

 

Nézzük meg a futtatható Java-kódokat!

 

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

 

 

 

 

 

 

 

 

import java.util.Scanner;

public class Main {
static String[] bemenetiAdatTomb = new String[2];
static double[] eredmenyTomb = new double[3];
static double egySzazalek = 0;

static String[] adatBekeres(){
    Scanner in = new Scanner (System.in);
    System.out.println ("Kérem adja meg a 100% mennyiségét!");
    bemenetiAdatTomb[0] = in.nextLine();
    double szam = Double.parseDouble(bemenetiAdatTomb[0]);
    while (szam <= 0){
        System.out.println("Kérem, hogy csak pozitív számot adjon meg!");
        bemenetiAdatTomb[0] = in.nextLine();
        szam = Double.parseDouble(bemenetiAdatTomb[0]);
    }
    System.out.println ("Kérem adja meg a százalékos arányt!");
    bemenetiAdatTomb[1] = in.nextLine();
    szam = Double.parseDouble(bemenetiAdatTomb[1]);
    while (szam <= 0){
        System.out.println("Kérem, hogy csak pozitív egész számot adjon meg!");
        bemenetiAdatTomb[1] = in.nextLine();
        szam = Double.parseDouble(bemenetiAdatTomb[1]);
    }
    return bemenetiAdatTomb;
}

static double[] szazalekSzamitas(String[] bemenetiAdatTomb){
    eredmenyTomb[0] = Double.parseDouble(bemenetiAdatTomb[0]);
//100% százalék
    eredmenyTomb[1] = Double.parseDouble(bemenetiAdatTomb[1]);
//? százalék
    eredmenyTomb[2] = 0;
//eredmény
    egySzazalek = eredmenyTomb[0] / 100;
    eredmenyTomb[2] = egySzazalek * eredmenyTomb[1];
    return eredmenyTomb;
}

static void kiiras (double[] eredmenyTomb){
    System.out.println("A bevitt szám (" + eredmenyTomb[0] + ") 1%-a: " + egySzazalek);
    System.out.println("A bevitt szám " + eredmenyTomb[1] + "%-a: " + eredmenyTomb[2]);
    System.out.println("A bevitt szám növekedése a százalék arányában: "
                                + (eredmenyTomb[0] + eredmenyTomb[2]));
    System.out.println("A bevitt szám csökkenése a százalék arányában: "
                                + (eredmenyTomb[0] - eredmenyTomb[2]));
    }

public static void main(String[] args) {
    adatBekeres();
    eredmenyTomb = szazalekSzamitas(bemenetiAdatTomb);
    kiiras(eredmenyTomb);
    }
}

 

Végeredmény:

Kérem, hogy adja meg a 100%-ot!
200
Kérem, hogy adja meg az arányt (%)!
25
A bevitt szám (200.0) 1%-a: 2.0
A bevitt szám 50.0%-a: 50.0
A bevitt szám növekedése a százalék arányában: 250.0
A bevitt szám csökkenése a százalék arányában: 150.0

 

A Százalékszámítás egyszerű adatbekéréssel című fejezetben ismertetett számviteli trükk, valamint a százalékszámítás egyszerűsége miatt valójában az egész százalékszámító metódus könnyen a kiírási metódusba illeszthető (vagy fordítva). Mi az előbbit választjuk (szamitasEsKiiras (String[] bemenetiAdatTomb). Ezáltal viszont az eredménytömb méretét is csökkenthetjük 1-gyel, hiszen annak eredménytárolójára már nincs szükségünk (static double[] eredmenyTomb = new double[2];):

 

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

 

 

 

 

 

 

 

 

import java.util.Scanner;

public class Main {
static String[] bemenetiAdatTomb = new String[2];
static double[] eredmenyTomb = new double[2];

static String[] adatBekeres(){
    Scanner in = new Scanner (System.in);
    System.out.println ("Kérem adja meg a 100% mennyiségét!");
    bemenetiAdatTomb[0] = in.nextLine();
    double szam = Double.parseDouble(bemenetiAdatTomb[0]);
    while (szam <= 0){
        System.out.println("Kérem, hogy csak pozitív számot adjon meg!");
        bemenetiAdatTomb[0] = in.nextLine();
        szam = Double.parseDouble(bemenetiAdatTomb[0]);
    }
    System.out.println ("Kérem adja meg a százalékos arányt!");
    bemenetiAdatTomb[1] = in.nextLine();
    szam = Double.parseDouble(bemenetiAdatTomb[1]);
    while (szam <= 0){
        System.out.println("Kérem, hogy csak pozitív egész számot adjon meg!");
        bemenetiAdatTomb[1] = in.nextLine();
        szam = Double.parseDouble(bemenetiAdatTomb[1]);
    }
    return bemenetiAdatTomb;
}

static void szamitasEsKiiras (String[] bemenetiAdatTomb){
    eredmenyTomb[0] = Double.parseDouble(bemenetiAdatTomb[0]); //100% százalék
    eredmenyTomb[1] = Double.parseDouble(bemenetiAdatTomb[1]); //? százalék
    System.out.println("A bevitt szám (" + eredmenyTomb[0] + ") 1%-a: " + (eredmenyTomb[0] / 100)
    + "\nA bevitt szám " + eredmenyTomb[1] + "%-a: " + eredmenyTomb[0] * (eredmenyTomb[1] / 100)
    + "\nA bevitt szám növekedése a százalék arányában: "
    + (eredmenyTomb[0] + (eredmenyTomb[0] * (eredmenyTomb[1] / 100))
    + "\nA bevitt szám csökkenése a százalék arányában: "
    + (eredmenyTomb[0] - (eredmenyTomb[0] * (eredmenyTomb[1] / 100)))));
    }

public static void main(String[] args) {
    adatBekeres();
    szamitasEsKiiras(bemenetiAdatTomb);
    }
}

 

Végeredmény:

Kérem, hogy adja meg a 100%-ot!
200
Kérem, hogy adja meg az arányt (%)!
25
A bevitt szám (200.0) 1%-a: 2.0
A bevitt szám 50.0%-a: 50.0
A bevitt szám növekedése a százalék arányában: 250.0
A bevitt szám csökkenése a százalék arányában: 150.0