Gyakorlati alapok

A téglalap kerülete és területe egyszerű adatbekéréssel

 

A téglalap olyan speciális négyszög, amelynek minden szöge egyenlő nagyságú, ugyanis minden szöge 90°-os derékszög. Legfontosabb tulajdonságainak kiszámításához csupán 2 bemeneti adatra van szükségünk, a 2 db, egymástól különböző oldalhosszra. A többit már viszonylag könnyű leprogramoznunk. Csupán 1 csomagot kell importálnunk az adatbekéréshez:

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. Célszerű a bemeneti adatokat (a és b) és a kimeneti adatokat double típusra deklarálnunk, ezáltal lebegőpontos számokkal is tudunk dolgozni (például 3,456). Ezután a String típusú bemeneti adatot át kell alakítanunk 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:

 

Téglalap kerülete = 2 (a + b)

Téglalap területe = a * b

 

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);
    System.out.println("Kérem, hogy adja meg az egyik oldalhosszt (a)!");
    String oldal = in.nextLine();
    double a = Double.parseDouble(oldal);
    System.out.println("Kérem, hogy adja meg az egyik oldalhosszt (b)!");
    oldal = in.nextLine();
    double b = Double.parseDouble(oldal);

    double kerulet = 2 * (a + b);
    double terulet = a * b;
    System.out.println("A téglalap kerülete: " + kerulet);
    System.out.println("A téglalap területe: " + terulet);
    }
}

 

Végeredmény:

Kérem, hogy adja meg az egyik oldalhosszt (a)!
10
Kérem, hogy adja meg az egyik oldalhosszt (b)!
4
A téglalap kerülete: 28.0
A téglalap területe: 40.0

 

A kódban észrevehetjük, hogy a String oldal összetett adattípust egymás után kétszer is felhasználtuk, hiszen az 1. bemeneti adatot azonnal eltároltuk double a változóba.

 

A kód sajnos nem kezeli le azt a jelenséget, ha a 2 bevitt oldalhossz azonos hosszúságú lesz, ekkor azonban már négyzetről beszélünk.

 

Kérem, hogy adja meg az egyik oldalhosszt (a)!
10
Kérem, hogy adja meg az egyik oldalhosszt (b)!
10
A téglalap kerülete: 40.0
A téglalap területe: 100.0

 

Ezt elkerülendő beiktatunk egy hátultesztelő ciklust, amely megvizsgálja, hogy a 2 oldalhossz azonos hosszúságú-e (while(a == b). Ha igen, újraindítja a bekérési folyamatot. Ezt úgy tudjuk megvalósítani, hogy az egész bekérést a kötelező feltételmegadással do while ciklusba tesszük. Ekkor azonban egy újfajta problémával szembesülünk: a double a és double b változók a cikluson belülre kerülnek, ezáltal lokális változókká válnak, amelyek nem lesznek láthatók a cikluson kívül (pontosabban: élettartamuk csak ciklushossznyi lesz). A megoldás, hogy még a kód elején, cikluson kívül deklaráljuk őket, egyúttal a biztonság kedvéért 0 értékkel fel is töltjük őket:

 

double a, b = 0;

 

Észrevehetjük, hogy mindez nem vonatkozik String oldal segédváltozóra, hiszen csak átmenetileg és ezen felül is csak a cikluson belül tárolja a bemeneti adatokat.

 

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);
    double a, b = 0;
    do{
        System.out.println("Kérem, hogy adja meg az egyik oldalhosszt (a)!");
        String oldal = in.nextLine();
        a = Double.parseDouble(oldal);
        System.out.println("Kérem, hogy adja meg az egyik oldalhosszt (b)!");
        oldal = in.nextLine();
        b = Double.parseDouble(oldal);
        }while(a == b);

    System.out.println();
    double kerulet = 2 * (a + b);
    double terulet = a * b;
    System.out.println("A téglalap kerülete: " + kerulet);
    System.out.println("A téglalap területe: " + terulet);
    }
}

 

Végeredmény:

Kérem, hogy adja meg az egyik oldalhosszt (a)!
10
Kérem, hogy adja meg az egyik oldalhosszt (b)!
10
Kérem, hogy adja meg az egyik oldalhosszt (a)!
10
Kérem, hogy adja meg az egyik oldalhosszt (b)!
4

A téglalap kerülete: 28.0
A téglalap területe: 40.0