Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Pasandav en 23 de Octubre 2015, 21:06
-
El mensaje "operator * cannot be applied to int, java.lang.String", indica que no se puede realizar la operación de multiplicar sobre un String (el valor actual de entradaUsuario).
Una de las soluciones es:
import javax.swing.JOptionPane;
public class ejemplo1 {
public static void main (String[] Args) {
String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
int entero;
entero= Integer.valueOf (entradaUsuario);
System.out.println ("El doble del número introducido es: " + 2 * entero);
}
}
Espero que sea lo que se pedía.
Un saludo y gracias.
-
Hola, perfecto, exactamente lo que se pedía, hacer una conversión del tipo de dato que evitara que saltara el error
Saludos
-
Me surge una duda con esta solución, ¿no sería más correcto declarar entero como Integer en lugar de int?
Gracias,
Un saludo.
-
Hola DaniMir, normalmente hay distintas alternativas para solucionar un mismo problema. Puedes plantear una solución alternativa declarando entero como Integer si lo deseas. Pega el código y lo comparamos. Saludos.
-
Simplemente en lo que tengo duda es que en esta solución se declara "entero" como int y sin embargo luego se le asigna un valor Integer en la línea "entero= Integer.valueOf (entradaUsuario);" ¿ esto se puede hacer? ¿entero no deberia declararse como "Integer" en lugar de "int" si mediante "valueOf" estoy obteniendo un Integer? Tal y como está la solución se le está asignando a un entero primitivo "int" un objeto Integer.
-
Hola, tienes razón en que hay un conflicto o no equivalencia exacta de tipos. No obstante, en este caso lo que hace el compilador es un parseado automático, automáticamente te convierte de int a Integer o viceversa si le es posible. De este modo lo que hace el compilador es transformar al tipo necesario.
Puedes declarar entero como Integer y podríamos decir que evitas esa conversión de tipos y es más correcto, aunque en este caso no tiene demasiada relevancia.
El compilador realiza ciertas acciones de forma automática en segundo plano. "Se puede hacer" todo lo que te permita el compilador, aunque hay ciertas cosas que aunque se pueden hacer podrían calificarse como malas prácticas de programación, pero en este caso como te he comentado tiene poca importancia.
Saludos