Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: rubens23 en 18 de Junio 2015, 14:01
-
Enunciado:
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?
RESPUESTAS
1.- Obviamente no te deja multiplicar un objeto de tipo String.
2.-
package aprender;
import javax.swing.JOptionPane;
public class ejemplo1 {
public static void main (String[] Args) {
String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
Integer n = new Integer(entradaUsuario);
//n = n.valueOf(entradaUsuario);
System.out.println ("El doble del número introducido es: " + 2*n);
}
}
-
Hola rubens23!
Ciertamente, no podemos multiplicar un tipo primitivo (int, double, float, ext) por un tipo Objeto como lo es un String y pretender obtener un buen resultado. Para esto es menester realizar una convercion de tipos tal y como lo has hecho.
Tu codigo es aceptable pero se puede mejorar.
Podrias usar directamente la siguiente sintaxis: System.out.println ("El doble del número introducido es: " + 2 * new Integer(entradaUsuario));
y así evitas tener que declarar la variable Integer n que has creado.
El método valueOf es un método estático, por lo que puedes llamarlo directamente desde la clase Integer, sin la necesidad de crear un objeto (Integer n) de tipo Integer. La sintaxis podria ser la siguiente: System.out.println ("El doble del número introducido es: " + 2 * Integer.valueOf(entradaUsuario));
Otro método que podríamos usar y obtener igual buenos resultados, es el método
también estático parseInt(String s). La sintaxis podría ser la siguiente: System.out.println ("El doble del número introducido es: " + 2 * Integer.parseInt(entradaUsuario));
Simplificar nuestro código siempre ha de ser una opción a tomar en cuenta cuando escribimos código, un código claro y corto es preferido ante un código extenso y "confuso", aun cuando ambos códigos funcionen igual.
Saludos!!