Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lorenzo31 en 29 de Marzo 2015, 22:31

Título: CU00670B# Conversión tipos operator * cannot be applied to int, java.lang.String
Publicado 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;

Código: [Seleccionar]
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

Código: [Seleccionar]
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.
Título: Re:CU00670B Conversión tipos operator * cannot be applied to int, java.lang.String
Publicado por: Mario R. Rancel en 30 de Marzo 2015, 23:25
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
Título: Re:CU00670B Conversión tipos operator * cannot be applied to int, java.lang.String
Publicado por: Lorenzo31 en 31 de Marzo 2015, 00:05
Buenas Mario, gracias por tu respuesta y tus explicaciones. Entiendo lo que dices, muy clara tu explicación.