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