Autor Tema: (JAVA) DUDA EJERCICIO CU00673B BlueJ se bloquea con Scanner  (Leído 5855 veces)

pbljnglz

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola, he escrito este código yno consigo detectar los fallos. Lo curioso es que si desde la ventana de BlueJ clico con el boton derecho sobre la Clase CirculoConUsuario y ejecuto el metodo main no se me abre la máquina virtual de java. Sin embargo si ya la tengo abierta si se ejecuta el método adecuadamente. Con el resto de clases no me apsa esto.
Código: [Seleccionar]
import java.util.Scanner;

public class CirculoConUsuario{

    public static void main(String[] args){
        Circulo usuCirculo;
        Scanner tecleado = new Scanner(System.in);
        String num = tecleado.nextLine();
        double radio = Double.parseDouble(num);
        usuCirculo = new Circulo(radio);
        System.out.print("El area de su circulo es: " + usuCirculo.getArea() + ". El perimetro de su circulo es: " + usuCirculo.getPerimetro() + ".");
    }
}
Código: [Seleccionar]
public class Circulo{
    //atributos
    private static final double PI = 3.1418;
    private double radio;

    public Circulo(){
        radio=1;
    }

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

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

    public double getRadio(){
        return radio;
    }

    public double getArea(){
        return PI*Math.pow(radio,2);
    }

    public double getPerimetro(){
        return PI*2*radio;
    }

}
« Última modificación: 02 de Septiembre 2014, 07:55 por Mario R. Rancel »

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1967
    • Ver Perfil
Re:(JAVA) DUDA EJERCICIO CU00673B
« Respuesta #1 en: 29 de Agosto 2014, 09:48 »
Ciertamente es un problema curioso, porque siendo el código sencillo, se revisa rápido y aparentemente no hay ningún error. Además compila sin problemas, pero como tú dices la ejecución se queda bloqueada... Aparentemente se debe a un detalle del compilador en lo que al uso de Scanner se refiere y se soluciona introduciendo un mensaje por consola para petición de un dato. Fíjate que tú estás usando scanner sin haber abierto la consola (no has mostrado un mensaje de petición de datos). Parece como si Scanner por sí mismo no fuera capaz de abrir la consola.

Lo solucionas simplemente introduciendo un mensaje de petición de datos:

Código: [Seleccionar]
import java.util.Scanner;

public class CirculoConUsuario{

    public static void main(String[] args){
        Circulo usuCirculo;
        Scanner tecleado = new Scanner(System.in);
        System.out.print("Introduzca el radio del circulo: ");
        String num = tecleado.nextLine();
        double radio = Double.parseDouble(num);
        usuCirculo = new Circulo(radio);
        System.out.print("El area de su circulo es: " + usuCirculo.getArea() + ". El perimetro de su circulo es: " + usuCirculo.getPerimetro() + ".");
    }
}

Saludos

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:(JAVA) DUDA EJERCICIO CU00673B
« Respuesta #2 en: 29 de Agosto 2014, 14:34 »
jajajajjajaja esto me a recordado a el scanf del C jejejeje

Debe ser cosa del blueJ, en otros ides no sucede... buena cuestión, estaría bien mandarles a los de blueJ un mensaje con la incidencia... Lo hago?? que pensais??

Bueno un saludo!!

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1967
    • Ver Perfil
Re:(JAVA) DUDA EJERCICIO CU00673B
« Respuesta #3 en: 29 de Agosto 2014, 14:57 »
Hombre, si tienes ganas hazlo... a ver qué te responden  ;)

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:(JAVA) DUDA EJERCICIO CU00673B
« Respuesta #4 en: 29 de Agosto 2014, 17:09 »
Bueno, pues ya me lo resolvieron, jejeje a ver pongo el mensaje que le mande y su respuesta...XDD

Duda presentada:
Citar
hello, i am using bluej but i look a problem.

When i create a Scanner object and you ask to user for a keyboard input  whithout any output before, the console dont show up when i execute my program with bluej...i wait i wait but dont appear... it´s this normal??

 for this i think that it's a bug... and finally i must to reset the java virtual machine and write an output(System.out) to make its work...
for example:

public class TestInput{

     public static void main(String[] args){
         Scanner tecleado = new Scanner(System.in);
         String chain = tecleado.nextLine();
         System.out.print("The chain value is "+chain);
     }
}


Respuesta:

Citar
Hi Luis,

This is covered in the FAQ:
http://www.bluej.org/faq.html#faq_I_wrote_a_program_that_asks_for_input__using_Scanner_class__System_in_read_______java_io___classes___When_I_run_it__it_does_nothing__and_just_keeps_running_forever_

The terminal window does not automatically open unless something is output to it. BlueJ cannot tell when your program is expecting input.

You simply need to make the terminal window visible (using the menu), as is described in the link that I sent you. There is no need to reset the virtual machine or perform output if you really do not wish to.

regards,

Davin

Para los que no controlan inglés, viene a decir que la consola no se abre automáticamente hasta que no se produzca una salida. Y que simplemente la hagamos visible usando el menú:  View --> Show Terminal.

Bueno la verdad es que es extraño solicitar una entrada sin ningún mensaje previo...
así que nada, cuando soliciteis una entrada sin realizar ninguna salida antes, debéis abrir la terminal manualmente, entonces ya podréis meter la entrada. 

Bueno un saludo.

Mario R. Rancel

  • Administrador
  • Experto
  • ********
  • APR2.COM
  • Mensajes: 1967
    • Ver Perfil
Re:(JAVA) DUDA EJERCICIO CU00673B
« Respuesta #5 en: 29 de Agosto 2014, 17:26 »
Sí, es extraño solicitar entradas sin mensaje previo. Y también es extraño que te hayan respondido tan rápido, aunque sea algo que tengan en las faq

Saludos!

pbljnglz

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:(JAVA) DUDA EJERCICIO CU00673B
« Respuesta #6 en: 01 de Septiembre 2014, 00:52 »
Muchas gracias por la ayuda a todos !

 

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