IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Výpočet obvodu a obsahu

Zdrojový kód k diskuzi - https://www.itnetwork.cz/java/diskuzni-forum-java/vypocet-obvodu-a-obsahu-5a25b60346ff7

java

// Soubor TypGeometrickehoTvaru.java
enum TypGeometrickehoTvaru {
    CTVEREC("čtverec"), OBDELNIK("obdélník");

    private final String nazev;

    TypGeometrickehoTvaru(final String nazev) {
        this.nazev = nazev;
    }

    public String getNazev() {
        return nazev;
    }
}

// Soubor GeometrickyTvar.java
interface GeometrickyTvar {

    double vypocitejObvod();

    double vypocitejObsah();

    TypGeometrickehoTvaru typObrazce();
}

// Soubor Ctverec.java
class Ctverec implements GeometrickyTvar {

    private final double stranaA;

    Ctverec(final double stranaA) {
        this.stranaA = stranaA;
    }

    @Override
    public double vypocitejObvod() {
        return 4 * stranaA;
    }

    @Override
    public double vypocitejObsah() {
        return stranaA * stranaA;
    }

    @Override
    public TypGeometrickehoTvaru typObrazce() {
        return TypGeometrickehoTvaru.CTVEREC;
    }
}

// Soubor Obdelnik.java
class Obdelnik implements GeometrickyTvar {

    private final double stranaA;
    private final double stranaB;

    Obdelnik(final double stranaA, final double stranaB) {
        this.stranaA = stranaA;
        this.stranaB = stranaB;
    }

    @Override
    public double vypocitejObvod() {
        return 2 * stranaA + 2 * stranaB;
    }

    @Override
    public double vypocitejObsah() {
        return stranaA * stranaB;
    }

    @Override
    public TypGeometrickehoTvaru typObrazce() {
        return TypGeometrickehoTvaru.OBDELNIK;
    }
}

// Soubor Aplikace.java
import java.util.Scanner;

class Aplikace {

    private final static Scanner scanner = new Scanner(System.in);

    private static double prectiCislo() {
        while (true) {
            try {
                return Double.parseDouble(scanner.nextLine());
            } catch (NumberFormatException e) {
                System.out.println("Špatný vstup, zkuste to prosím znovu:");
            }
        }
    }

    private static double prectiNezaporneCislo(final String message) {
        while (true) {
            double cislo = prectiCislo();
            if (cislo > 0) return cislo;
            else System.out.println(message);
        }
    }

    private static GeometrickyTvar createShape() {
        final String message = "Záporná délka strany!";
        final double stranaA = prectiNezaporneCislo(message);
        final double stranaB = prectiNezaporneCislo(message);
        return (stranaA == stranaB ? new Ctverec(stranaA) : new Obdelnik(stranaA, stranaB));
    }

    public static void main(String[] args) {
        // Přečti zadaní.
        System.out.println("Vyberte: 1 = obvod, 2 = obsah");
        int zadani;
        for (zadani = (int) prectiCislo(); zadani < 1 || zadani > 2; zadani = (int) prectiCislo())
            System.out.println("Neplatné zadání!");

        // Načti délky stran a vytvoř z nich geometrický tvar.
        System.out.println("Zadejte délky stran:");
        final GeometrickyTvar geometrickyTvar = createShape();

        // Vypiš výsledek podle zadání.
        System.out.print("Obrazec je " + geometrickyTvar.typObrazce().getNazev() + " a jeho ");
        switch (zadani) {
            case 1:
                System.out.println("obvod je: " + geometrickyTvar.vypocitejObvod());
                break;
            case 2:
                System.out.println("obsah je: " + geometrickyTvar.vypocitejObsah());
                break;
        }
    }
}

Neformátovaný

Přidáno: 5.12.2017
Expirace: Neuvedeno

Aktivity