Ir para o conteúdo

Cálculo de área de formas geométricas


Criado por raviel28, Out 01 2010 00:53

Não há respostas para este tópico
  • Por favor, faça o login para responder

#1 raviel28

raviel28
  • raviel28
  • Colaborador
  • 22 Revisões

Revisou 01 outubro 2010 - 00:53

Contribuo abaixo com um código que encontrei no Javafree e me ajudou muito. Um aplicativo que vai calcular a área de uma circunferência ou retângulo conforme fluxo de entrada de um objeto Scanner.

 import java.util.Scanner;  
   
 public abstract class Forma {  
    private double medida[];  
   
    public Forma(int numMedidas) {  
       medida = new double[numMedidas];  
    }  
   
    public double getMedida(int i) {  
       if (i < 0 || i >= medida.length) {  
          throw new RuntimeException("Numero inválido de medida!");  
       }  
       return medida[i];  
    }  
   
    protected void setMedida(int i, double m) {  
       if (i < 0 || i >= medida.length) {  
          throw new RuntimeException("Numero inválido de medida!");  
       }  
       if (m < 0) {  
          throw new RuntimeException("Medida #" + i + "inválida.");  
       }  
       medida[i] = m;  
    }  
   
    public String toString() {  
       StringBuffer sb = new StringBuffer(getClass().getName());  
       sb.append("medidas : ");  
       for (int i = 0; i < medida.length; i++) {  
          sb.append(medida[i]);  
          sb.append(",");  
       }  
       sb.append(medida[medida.length - 1]);  
       sb.append("}");  
       return sb.toString();  
    }  
   
    public int getNumMedidas() {  
       return medida.length;  
    }  
   
    public abstract double area();  
   
    public static void main(String[] args) {  
       System.out.println("Que área você quer calcular?\n"  
             + "1 para Circunferência\n" + "2 para Retângulo\n   ");  
       try {  
          Scanner abc = new Scanner(System.in);  
          int ler = abc.nextInt();  
          if (ler == 1) {  
             System.out.println("Digite a altura do retângulo:");  
             double altura = abc.nextDouble();  
             System.out.println("Digite a largura do retângulo:");  
             double largura = abc.nextDouble();  
             Retangulo ret = new Retangulo(altura, largura);  
             System.out.println("Área do retângulo: " + ret.area());  
             System.out  
                   .println("Perímetro do retângulo: " + ret.perimetro());  
          } else if (ler == 2) {  
             System.out.println("Digite o raio da circunferência:");  
             double raio = abc.nextDouble();  
             Circunferencia cir = new Circunferencia(raio);  
             System.out.println("Área da circunferência: " + cir.area());  
          }  
       } catch (Exception e) {  
          System.out.println(e);  
       }  
    }  
 }  
   
 public class Circunferencia extends Forma {  
    public Circunferencia(double raio) {  
       super(1);  
       setMedida(0, raio);  
    }  
   
    public double area() {  
       return Math.PI * Math.pow(getMedida(0), 2);  
    }  
 }  
   
 public class Retangulo extends Forma {  
    public Retangulo(double altura, double largura) {  
       super(2);  
       setMedida(0, altura);  
       setMedida(1, largura);  
    }  
   
    public double area() {  
       return getMedida(0) * getMedida(1);  
    }  
   
    public double perimetro() {  
       return 2 * (getMedida(0) + getMedida(1));  
    }  
 }  





1 usuário(s) está(ão) lendo este código

1 membro(s), 0 visitante(s) e 0 membros anônimo(s)