Autor Tema: Java transformar String entrada teclado en double con Double.valueOf CU00673B  (Leído 1685 veces)

edioswaldo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 11
    • Ver Perfil
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.

Citar
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

Código: [Seleccionar]
//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 Circulo

Código: [Seleccionar]
public 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 TestCirculo

Código: [Seleccionar]
public 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.
« última modificación: 19 de Septiembre 2015, 12:31 de César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2228
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola edioswaldo!

Para validar entradas por teclado pueden usarse distintas vías, por ejemplo el uso de expresiones regulares que comprueben si la entrada se ciñe a un patrón. Esto no forma parte del curso pero puedes consultarlo en https://docs.oracle.com/javase/tutorial/essential/regex/ por ejemplo.

Tu código está correcto. A seguir avanzando!
Responsable de departamento de producción aprenderaprogramar.com

 

Esto es un laboratorio de ideas...
Aprender a programar

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".