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:
-
(korlátozottan) ellenőrzött adatbekérés - a metódus csakis azt ellenőrzi, hogy ne kerüljön 0 vagy kisebb szám a rendszerbe, egyéb, nem numerikus karakter esetén kivételt dob;
-
százalékszámítás - bemeneti, átmeneti és végeredményeit egy eredménytömbbe (static double[] eredmenyTomb = new double[3];) pakolja, hogy át tudja adni a kiiras() metódusnak,
-
kiírás.
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!
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];):
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