Somar areas de retangulos

10 respostas
A

Oi pessoal, neste programa que criei, o usuario informa quantos retangulos quer cria,
e as medidas desejadas, e é exibido a area de cada retangulo.

public static void main(String[] args) {
		// TODO Auto-generated method stub
		int auxiliar;
		double l =0;
		double a =0;
		double areaTotal =0;
		double soma =0;
		
		auxiliar = Integer.parseInt(JOptionPane.showInputDialog("Quantos deseja criar?"));
	   Retangulo[] retangulos = null;
	   
	   for(int i=0; i < auxiliar;i++){
		   retangulos = new Retangulo[auxiliar];
		  
			   l = Double.parseDouble(JOptionPane.showInputDialog("largura"));
			   a = Double.parseDouble(JOptionPane.showInputDialog("altura"));
			   
			   retangulos[i] =  new Retangulo(l,a);
			   
			   System.out.println(retangulos[i]);
		   
	   }
	  
		
	}
public String toString() {
        return "\n Retangulo: largura= " +largura+" ,altura= " +altura + 
               "\n area " + altura*largura;
    }

Mas como exibir a soma de todas as areas?
alguém poderia me ajudar?

10 Respostas

W

Testa isso daí…

1. public static void main(String[] args) {  
   2.         // TODO Auto-generated method stub  
   3.         int auxiliar;  
   4.         double l =0;  
   5.         double a =0;  
   6.         double areaTotal =0;  
   7.         double soma =0;  
   8.           
   9.         auxiliar = Integer.parseInt(JOptionPane.showInputDialog("Quantos deseja criar?"));  
  10.        Retangulo[] retangulos = null;  
  11.          
  12.        for(int i=0; i < auxiliar;i++){  
  13.            retangulos = new Retangulo[auxiliar];  
  14.             
  15.                l = Double.parseDouble(JOptionPane.showInputDialog("largura"));  
  16.                a = Double.parseDouble(JOptionPane.showInputDialog("altura"));  
  17.                  
  18.                retangulos[i] =  new Retangulo(l,a);  
  19.                areaTotal += (l * a);  
  20.                System.out.println(retangulos[i]);  
  21.              
  22.        }  
  23.         
  24.           
  25.     }
W

apenas adicionei…

areaTotal += (l * a);

de acordo com que vai criando os retangulos ele vai somando as areas de cada um.

W

Para imprimir o total… adiciona depois do for

System.out.println(areaTotal);
A

Deu certo, muito obrigada,
mais uma perguntinha,
posso reutilizar essa linha do codigo(a que soma) em algum método generico?

vitor_lima

Sabe, o print line da linha 20 (que está dentro do for)
imprimirá código hash de cada objeto do tipo Retangulo que
estiver no array e, pelo que entendi, era esperado que fosse
imressa a área de cada retângulo.

W

Como gostaria que fosse esse metodo generico??? Pra qual finalidade???

A

para somar as áreas dos arrays de retangulos

W

Sim… existem diversos tipos de metodos que podem ser criados para essa situação…
Por exemplo um metodo onde é calculado o total da area através da lista existente:

public double calculaAreaTotal() {
     double area = 0.0;
     for(final Retangulo retangulo : Retangulos) {
          area += (retangulo.getAltura() * retangulo.getLargura());
     }
     return area;
}

ou vc atualiza sua variavel areaTotal… não precisando retornar nada em seu método

public void calculaAreaTotal() {
     for(final Retangulo retangulo : Retangulos) {
          areaTotal += (retangulo.getAltura() * retangulo.getLargura());
     }
}

ou

public void calculaAreaTotal(final Retangulo[] retangulos) {
     for(final Retangulo retangulo : Retangulos) {
          areaTotal += (retangulo.getAltura() * retangulo.getLargura());
     }
}

… e assim ainda tem muito mais alternativas… Só precisa saber sua necessidade…

Espero ter ajudado… qualquer duvida manda aí…

A

Todos são genericos?

DavidUser

tem de colocar a atribuição do array fora do laço for, e criar um inteiro para armazenar os resultado de cada operação e ir somando, se quizer algo mais volátil guarde os resultados nesse array e percora com um um enhancher-for

Criado 28 de agosto de 2009
Ultima resposta 29 de ago. de 2009
Respostas 10
Participantes 4