Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lorenzo31 en 29 de Marzo 2015, 22:31
-
Ahí van mis respuestas al ejercicio.
salta un mensaje de error “operator * cannot be applied to int, java.lang.String”
a ¿Qué interpretación haces de este mensaje de error?
Respuesta Al querer multiplicar un entero 2 * String (entradaUsuario) salta error por incompatibilidad de tipos.
b ¿Cómo se puede corregir el código para que a través de una conversión de tipos se ejecute el programa?
Respuesta
Con valueOf. Transformo el String en un Integer, y opero con el pues Java creo se explicó que transformaba un objeto Integer a un int primitivo por si solo (en el cálculo, lo añado porque en el siguiente capitulo se ve la importancia de pasar bien tipos primitivos o Objetos) , sino habria que volver a transformar el Integer a int con un,
int nuevoNumero = (int)ObjetoInteger;
import javax.swing.JOptionPane;
public class Ejemplo1{
public static void main (String [] args){
Integer numero = 0;
String entradaUsuario = JOptionPane.showInputDialog("Introduzca un número:");
numero = numero.valueOf(entradaUsuario);
System.out.println("El doble del numero introducido es : " + 2 * numero);
} //cierre main
}// cierre clase
con parseInt
import javax.swing.JOptionPane;
public class Ejemplo1{
public static void main (String [] args){
int numero;
String entradaUsuario = JOptionPane.showInputDialog("Introduzca un número:");
numero = Integer.parseInt(entradaUsuario);
System.out.println("El doble del numero introducido es : " + 2 * numero);
} //cierre main
}// cierre clase
Hay alguna diferencia? me da la sensación que con parseInt ya convierte String --> Integer ---> int. la doble conversión y valueOf necesitaria hacerla de nuevo con el Integer.
-
Hola Lorenzo, tus respuestas son correctas.
valueOf y parseInt son métodos que en algunos casos pueden resultar equivalentes, aunque no son exactamente lo mismo. Si consultamos el api de java lo comprobamos:
valueOf(String s) devuelve una instancia de Integer que contiene el valor indicado por el String
public static int parseInt(String s) devuelve un tipo primitivo int con el valor indicado por el String
La diferencia principal es que un método te devuelve un tipo primitivo y el otro un objeto, y no es lo mismo un tipo primitivo que un objeto, aunque algunas veces podamos trabajar con ellos como si fueran equivalentes.
Saludos
-
Buenas Mario, gracias por tu respuesta y tus explicaciones. Entiendo lo que dices, muy clara tu explicación.