problema con un array
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
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
¿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.
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.
