Respuesta al ejercicio CU00670B del curso elemental de programación Java con entorno de desarrollo BlueJ
El API de Java proporciona herramientas para pedir datos al usuario a través de ventanas. Un ejemplo de ello es el uso de la clase JOptionPane perteneciente al paquete javax.swing.JOptionPane del API Java. El método showInputDialog permite pedir un dato al usuario y almacena su respuesta en un objeto de tipo String. Queremos crear un programa que pida al usuario un número y muestre por pantalla el doble de ese número. Para ello hemos creado este código:
import javax.swing.JOptionPane;
public class ejemplo1 {
public static void main (String[] Args) {
String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
System.out.println ("El doble del número introducido es: " + 2*entradaUsuario);
}
}
El problema que tenemos es que nos salta un mensaje de error “operator * cannot be applied to int, java.lang.String”. ¿Qué interpretación haces de este mensaje de error? ¿Cómo se puede corregir el código para que a través de una conversión de tipos se ejecute el programa? Puedes comprobar si tu código y respuestas son correctas consultando en los foros aprenderaprogramar.com.
Respuesta:El error que sale es por que el dato que ingresa el usuario mediante la ventana JOptionPane asi sea un número esta clase solo recibe cadenas de tipo String. por lo tanto, el numero que se introduce es leído como una cadena de texto. Si le decimos que nos imprima el doble mediante la operación 2*entrada, nos dará un error puesto que el operador * solo se ejecuta con variables de tipo integer o int. Lo lógico sería realizar una conversión de String a Integer usando el método valueoOf o de tipo int utilizando el método Integer.ParseInt. ¡Conclusión! Mi forma de hacerlo sería:
package Ejercicios;
import javax.swing.*; //Importación del paquete javax.swing ara usar la clase JOptionPane
public class Conversion {
public static void main(String[] args) {
// TODO Auto-generated method stub
String entrada=JOptionPane.showInputDialog("Introduza un número para obtener su doble: ");
Integer numero=Integer.valueOf(entrada); // Conversion del tipo de dato por medio de valueOf
JOptionPane.showMessageDialog(null, "El doble del número introducido es "+(2*numero));
} //Cierre del método main
} // Cierre de la clase