Buenas estimados
. He seguido con el curso de Java, aunque no he subido los ejercicios para la revisión. Aqui esta el mio, espero esté bien.
Tema: static, final en Java (palabras clave). Variables de clase o campos estáticos y constantes.
* Ejemplos (CU00673B)
* EJERCICIO: Define una clase Java denominada Circulo que tenga como atributo de clase (estático) y constante numeroPi, siendo esta constante de tipo double y valor 3.1416. Además la clase tendrá el atributo radio (tipo double) que representa el radio del círculo, y los métodos para obtener y establecer los atributos. También debe disponer de un método para calcular el área del círculo (método tipo funcion areaCirculo que devuelve el área) y la longitud del círculo (método tipo función que devuelve la longitud). Busca información sobre las fórmulas necesarias para crear estos métodos en internet si no las recuerdas. En una clase con el método main, declara el código que cree un objeto círculo, le pida al usuario el radio y le devuelva el área y la longitud del círculo.
¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi? ¿Por qué?
Respecto a la pregunta, es que No hay como establecer el valor numerico Pi porque ya lo definimos como una constante "static final" en la cabecera y si comprobamos al compilar nos da un error por este motivo.
Para el Ejercicio usé tres clases que a continuación publico.Clase EntradaTeclado//Clase para ingresar texto por teclado y usarlo en clase TestCirculo, etc.
import java.util.Scanner;
public class EntradaTeclado{//nombre de la clase
//atributos
private String texto;
private Scanner captura;
//constructor
public EntradaTeclado(){
texto="";
captura=new Scanner(System.in);
}
//métodos
public String ingresoTeclado(){
texto=captura.nextLine();
return texto;
}
}//cierre de la clase
Clase Circulopublic class Circulo{//nombre de la clase
//atributos
private static final double PI=3.1416;//declaramos constante PI
private double radio;
//constructor
public Circulo(){
radio=0.0;
}
public Circulo(double radio){
this.radio=radio;
//PI=5.0;//No se puede establecer el valor Pde numeroPi porque es estatico
}
//Métodos
//public void setPi(double numeroPi){PI=numeroPi;}//No se puede establecer el valor Pde numeroPi porque es estatico
public void setRadio(double radio){this.radio=radio;}//establecer el valor del atributo radio
public void mostrarPI(){System.out.println("el valor de PI es:"+PI);}//Solo para hacer pruebas (mostrar)
public double getRadio(){return radio;}//obtener el valor
//método para calcular el área del círculo
public double calcularAreaCirculo(){
double area=PI*(Math.pow(radio,2));//A=PI*radio^2
return area;
}
//método para calcular la longitud del círculo
public double calcularLongitudCirculo(){
double perimetro=(radio*2)*PI; //P=2(radio)*PI ó P=d*PI donde d=2*radio
return perimetro;
}
}//cierre de la clase
Clase TestCirculopublic class TestCirculo{//Nombre de la clase
public static void main (String []args){
Circulo objCirculo=new Circulo();//creo objeto circulo
EntradaTeclado palabra=new EntradaTeclado();//creo objeto para entrada por teclado
double area,longitud;//variables para almacerar las respuestas de los calculos
System.out.println("~~~~~~~~~Programa Circulo-manejo de constantes(variable static final)~~~~~~~~~~~~~~~~~");
System.out.print("Por favor, ingrese el radio del círculo:");
objCirculo.setRadio( Double.valueOf( palabra.ingresoTeclado() ));//establesco el radio
area=objCirculo.calcularAreaCirculo();//calculo el area
longitud=objCirculo.calcularLongitudCirculo();//calculo la longitud
System.out.println("El área del círculo es ["+area+"] y La longitud del círculo es ["+longitud+"]");//presento resultados
}//cierre del main
}//cierre de la clase
Tengo una consulta:¿Cómo puedo validar que el Ingreso por teclado sea un valor numerico o decimal?
Ya que por ejemplo si por error digito "J" me va a salir un error de ejecución.
Gracias por su atención.