Gyakorlati alapok
A kör kerülete és területe egyszerű adatbekéréssel
Az egyszerű adatbekérés azt jelenti, hogy csak egyetlen bemeneti adatot vagy adatcsoportot kérünk be és nem vizsgáljuk meg azok helyességét.
A kör legfontosabb tulajdonságainak kiszámításához csupán 2 bemeneti adatra van szükségünk, a sugárra (r - radius)...
...és a PI értékére (3.1415926535). A többit már viszonylag könnyű leprogramoznunk. Először is 2 csomagot kell importálnunk egyrészt az adatbekérés, másrészt a belső matematikai függvények elérése miatt (persze a hatványozást "kézileg" is meg tudjuk oldani, de inkább gyakoroljuk a belső függvények használatát):
-
import java.math.*;
-
import java.util.Scanner;
Az adatbekérő metódus String adattípusban kapja meg a bemeneti adatot, ám nekünk a számítás elindításához valamilyen numerikus típus szükséges. Mivel a körszámításokhoz mindig hozzátartozik a PI standard, nem változó értéke (final double PI = 3.1415926535), amely egy földi giliszta hosszúságú tizedes tört, ezért őt, a bemeneti adatot (sugar) és a kimeneti adatokat is érdemes double típusra deklarálnunk, ezáltal lebegőpontos számokat is tudunk fogadni (például 3,456). Ezután a String típusú bemeneti adatot át kell alakítanunk numerikus double típusra, amelyet a Double osztály parseDouble() metódusa végez el nekünk. Matematikailag nézve 2 db képletünk van, ezeket kell implementálnunk:
-
Kör kerülete = 2 * r * PI
-
Kör területe = r2 * PI
import java.math.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
final double PI = 3.1415926535;
Scanner in = new Scanner(System.in);
System.out.println("Kérem, hogy adja meg a sugárhosszt
(r)!");
String sugar = in.nextLine();
double r = Double.parseDouble(sugar);
double kerulet = 2 * r * PI;
double terulet = Math.pow(r, 2) * PI;
System.out.println(r + " egységnyi sugarú kör
kerülete: " + kerulet);
System.out.println(r + " egységnyi sugarú kör
területe: " + terulet);
}
}
Végeredmény:
Kérem, hogy adja meg a sugárhosszt (r)!
5.8
A 5.8 egységnyi sugarú kör kerülete: 36.4424747806
A 5.8 egységnyi sugarú kör területe: 105.68317686374
Természetesen a double kerulet és terulet változók el is hagyhatók, hiszen a System.out.println () függvény képes bemeneti paraméterként fogadni számításokat is:
import java.math.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
final double PI = 3.1415926535;
Scanner in = new Scanner(System.in);
System.out.println("Kérem, hogy adja meg a sugárhosszt
(r)!");
String sugar = in.nextLine();
double r = Double.parseDouble(sugar);
System.out.println(r + " egységnyi sugarú kör
kerülete: " + 2 * r * PI);
System.out.println(r + " egységnyi sugarú kör
területe: " + Math.pow(r, 2) * PI);
}
}
Végeredmény:
Kérem, hogy adja meg a sugárhosszt (r)!
5.8
A 5.8 egységnyi sugarú kör kerülete: 36.4424747806
A 5.8 egységnyi sugarú kör területe: 105.68317686374
A final módosítószóról részletesen az Ami a változót (és a többieket) változatlanná teszi: a final című fejezetben olvashatunk.
Továbbá fontos megjegyeznünk, hogy a beimportált matematikai osztály természetesen tartalmazza a PI állandót:
import java.math.*;
public class Main {
public static void main(String[] args) {
System.out.println(Math.PI);
}
}
Végeredmény:
3.141592653589793
Ebből következően javítsuk át a fenti körszámításos kódot:
import java.math.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Kérem, hogy adja meg a sugárhosszt
(r)!");
String sugar = in.nextLine();
double r = Double.parseDouble(sugar);
System.out.println(r + " egységnyi sugarú kör
kerülete: " + 2 * r * Math.PI);
System.out.println(r + " egységnyi sugarú kör
területe: " + Math.pow(r, 2) * Math.PI);
}
}
Végeredmény:
Kérem, hogy adja meg a sugárhosszt (r)!
5.8
5.8 egységnyi sugarú kör kerülete: 36.4424747816416
5.8 egységnyi sugarú kör területe: 105.68317686676065
Mivel a Math.PI néhány tizedesjeggyel pontosabb, az eredmények is azok lesznek. Feltételezésem szerint a Math.PI a Java rendszerprogramozói által beállított pontossága elégséges mérnöki számítások elvégzésére is.