problema con un array

Dario
18 de Febrero del 2006
hola
apenas estoy empezando a ver como se usan los arrays, y necesito un poco de ayuda para poder hacer un pgoblema.

tengo que hacer un programa que en una clase calcule el area de un circulo, y en la otra hacer un array de 20 objetos de esa clase (el programa debe pedir 20 valores del radio para el circulo y va a hacer un area para cada elemento del array , tambien necesito obtener el mayor de estas areas.

esto es lo que he hecho hasta ahora


public class Circulo{

public double calcularArea(double area, double radio){

area = 3.14159 * radio * radio;
return area;
}
}



import javax.swing.*;

public class UsaCirculo{

public static void main (String [] args){

Circulo objCirculo = new Circulo();

double mayor, area, radio;
area = 0;
mayor = 0;

Circulo [] circuloArray = new Circulo [20];

for (int i= 0; i < circuloArray.length; i++){
radio = Double.parseDouble(JOptionPane.showInputDialog("Dame el radio del circulo"+(i+1)));

circuloArray [i] = new Circulo();

circuloArray [i].calcularArea(area, radio);

mayor = circuloArray [0].calcularArea(area, radio);

if (circuloArray[i].calcularArea(area, radio) > mayor)
mayor = circuloArray[i].calcularArea(area, radio);
}

System.out.println("El area mayor es de: " +mayor);
}
}


el problema con mi codigo es que el valor que me regresa como mayor es siempre el valor del area del
circuloArray[19], quisiera saber cual es mi error y que puedo hacer para correjirlo, gracias por adelantado

Diego
18 de Febrero del 2006
¿Por qué para calcular el área pasas el área como parámetro?
Calculala así:
public static double areaCirculo(double radio){
return Math.PI*radio*radio;
}

Por lo que respecta a mostrar el área del mayor, llamas 20 veces al método calcularArea, almacena el valor en una variable para no tener que volver a calcularlo y que el código se más eficiente, o simplemente compara los radios y calcula el área para el mayor radio sólo al final. Espero que te sirva.

Dario
18 de Febrero del 2006
tienes razon, no necesito el area como parametro... ya hice lo que me sugeriste y el programa ya funciona, gracias Diego