Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: fedegaray en 16 de Abril 2015, 15:15
-
Hola, tengo una pregunta. He finalizado el ejercicio de la lección CU00670B, pero tuve un problema. Si lo resolvía con la sintaxis que ofrece la lección, me arrojaba el error
Cannot find symbol - variable entradaConvertida
a causa de esta línea de código...
entradaUsuario = entradaUsuario.valueOf (entradaConvertida);
Intenté resolver este problema declarando (entes de la entrada del usuario) la variable de la siguiente manera int entradaConvertida = 0;
pero al hacer esto, a pesar de que no arroja más el error, la resolución del problema es siempre "0". Por supuesto que me doy cuenta el por qué de este resultado, pero no logro ver cómo declarar la variable sin inicializarla con un valor que afectará el resultado. Investigando en la red descubrí que podía realizar la conversión de la siguiente manera
int entradaConvertida = Integer.valueOf (entradaUsuario);
y ahí sí todo salió bien, pero me preocupa no haberlo podido lograr con la sintaxis que propone la lección... ¿me he perdido de algo?
Esta es la resolución completa como me quedó...
import javax.swing.JOptionPane;
public class ejemplo1 {
public static void main (String[] Args) {
String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
int entradaConvertida = Integer.valueOf (entradaUsuario);
System.out.println ("El doble del número introducido es: " + 2* entradaConvertida);
}
}
-
Buenos dias fede!
Así propuso el curso resolverlo:
miInteger = miInteger.valueOf (miString)
miInteger quiere decir, tu Integer... osea... entradaConvertida debió declararse anteriormente como Integer. Si declaras entradaConvertida como int te saldra el error:
(http://i.imgur.com/2Vf7V5m.png)
Recordemos que int y Integer son dos cosas distintas. int es un tipo primitivo mientras que Integer es un objeto. El valueOf() funciona solamente con clases llamados "Tipos envolventes", ellas son:
1. Integer
2. Double
3. Float
4. Long
5. Byte
6. Short
7. Float
8. Double
9. Character
10. Boolean
Estas clases pueden acceder al valueOf(), en este caso era usar un Integer, quiero que copies este código y lo veas:
public static void main (String[] Args) {
String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
Integer entradaConvertida = 0;
entradaConvertida = entradaConvertida.valueOf (entradaUsuario);
System.out.println ("El doble del número introducido es: " + 2* entradaConvertida);
}
veras que funciona como se esperaba! para ponerlo mas entendible, el valueOf solo trabaja con objetos. En cuanto a su solucion, no esta mal, se cumplio lo que se queria...
Espero haber aclarado las dudas,
Saludos!
-
Completísima y muy útil respuesta. Muchas gracias, has resuelto mi duda!