Autor Tema: java.util.InputMismatchExceptionn: null (in java.util.Scanner) CU00673B  (Leído 3543 veces)

niurkafer

  • Principiante
  • **
  • Mensajes: 50
    • Ver Perfil
Citar
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.

Código: [Seleccionar]
import java.util.Scanner;
public class Circulo {
    private static final double numeroPI = 3.1416;
    private static double radio;

    public Circulo(){
        radio = 0;
    }

    public Circulo (double valorRadio){ radio = valorRadio;}

    public void setRadio(double valorRadio){ radio = valorRadio; }

    public double getRadio(){ return radio; }

    public double calcularArea (){ return (numeroPI) * (radio*radio); }

    public double calcularLongitud (){ return 2 * numeroPI * radio; }

    public static void main (String [] Args){
        Scanner sc = new Scanner (System.in);
        System.out.println ("Por favor, ingrese (en números) el radio de un círculo...");
        Integer radioIngresado = sc.nextInt();
        Circulo nuevoCirculo = new Circulo();
        nuevoCirculo.setRadio(radioIngresado);
        System.out.println ("El área del círculo, es " + nuevoCirculo.calcularArea());
        System.out.println ("La longitud del círculo es " + nuevoCirculo.calcularLongitud());
        System.out.println ("Hasta Luego");

    }
}

Citar
¿Es posible crear un método en la clase Circulo para establecer el valor de numeroPi? ¿Por qué?

R= No se puede cambiar el valor del atributo PI porque se le ha declarado constante al usar la palabra clave final
« Última modificación: 19 de Septiembre 2015, 12:22 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:java.util.InputMismatchExceptionn: null (in java.util.Scanner) CU00673B
« Respuesta #1 en: 19 de Septiembre 2015, 12:23 »
Hola niurkafer si introduzco como valor del radio 2.5 me sale un error java.util.InputMismatchExceptionn: null (in java.util.Scanner)

¿Por qué? Porque estás dando por supuesto que el radio es un entero al pedirlo al usuario: Integer radioIngresado = sc.nextInt();

Sin embargo el radio como dice el enunciado del ejercicio es un double

¡Debes corregir esto!

Saludos
Responsable de departamento de producción aprenderaprogramar.com

niurkafer

  • Principiante
  • **
  • Mensajes: 50
    • Ver Perfil
Re:java.util.InputMismatchExceptionn: null (in java.util.Scanner) CU00673B
« Respuesta #2 en: 21 de Septiembre 2015, 18:41 »
tengo un problema y no lo logro ver con claridad resulta que cuando compilo me dice que no hay errores pero cuando abro el main se queda corriendo sin abrir nunca la pantalla no se porque


Código: [Seleccionar]
import java.util.Scanner;
public class Circulo {
    private static final double numeroPI = 3.1416;
    private static double radio;
       
    public Circulo(){
        radio = 0;
    }

    public Circulo (double valorRadio){ radio = valorRadio;}

    public void setRadio(double valorRadio){ radio = valorRadio; }

    public double getRadio(){ return radio; }

    public double calcularArea (){ return (numeroPI) * (radio*radio); }

    public double calcularLongitud (){ return 2 * numeroPI * radio; }

    public static void main (String [] Args){
        Scanner sc = new Scanner (System.in);
        String entradaTeclado = "";
        entradaTeclado = sc.nextLine();
        System.out.println ("Por favor, ingrese (en números) el radio de un círculo...");
        double radio = Double.valueOf(sc.nextLine());   
        Circulo nuevoCirculo = new Circulo();
        nuevoCirculo.setRadio(radio);
        System.out.println ("El área del círculo, es " + nuevoCirculo.calcularArea());
        System.out.println ("La longitud del círculo es " + nuevoCirculo.calcularLongitud());
        System.out.println ("Hasta Luego");

    }
}

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:java.util.InputMismatchExceptionn: null (in java.util.Scanner) CU00673B
« Respuesta #3 en: 21 de Septiembre 2015, 22:54 »
Hola, creo que tu error viene en esta linea:

Código: [Seleccionar]
entradaTeclado = sc.nextLine();
le pides al Scanner que lea una cadena de caracteres que no has introducido, así que prueba a quitar esa linea y seguro que te funcionará ya que ya tienes otra linea que va a leer la cadena de caracteres después de haber introducido los datos.

Código: [Seleccionar]
double radio = Double.valueOf(sc.nextLine());   
Saludos.

niurkafer

  • Principiante
  • **
  • Mensajes: 50
    • Ver Perfil
Re:java.util.InputMismatchExceptionn: null (in java.util.Scanner) CU00673B
« Respuesta #4 en: 23 de Septiembre 2015, 12:50 »
Efectivamente elimine entradaTecaldo y listo muchas gracias...

Código: [Seleccionar]
import java.util.Scanner;
public class Circulo {
    private static final double numeroPI = 3.1416;
    private static double radio;
       
    public Circulo(){
        radio = 0;
    }

    public Circulo (double valorRadio){ radio = valorRadio;}

    public void setRadio(double valorRadio){ radio = valorRadio; }

    public double getRadio(){ return radio; }

    public double calcularArea (){ return (numeroPI) * (radio*radio); }

    public double calcularLongitud (){ return 2 * numeroPI * radio; }

    public static void main (String [] Args){
        Scanner sc = new Scanner (System.in);
        System.out.println ("Por favor, ingrese (en números) el radio de un círculo...");
        double radio = Double.valueOf(sc.nextLine());   
        Circulo nuevoCirculo = new Circulo();
        nuevoCirculo.setRadio(radio);
        System.out.println ("El área del círculo, es " + nuevoCirculo.calcularArea());
        System.out.println ("La longitud del círculo es " + nuevoCirculo.calcularLongitud());
        System.out.println ("Hasta Luego");
    }
}

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

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".