Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Chompy129 en 20 de Diciembre 2016, 21:24
-
Conversión de tipos de datos en java (tipado). Ejemplos. Método valueOf. Error inconvertible types (CU00670B)
Aquí les dejo el ejercicio:
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
a) No puedes multiplicar un número con una cadena de texto, no tiene lógica. En términos de programación, lanza un error porque los operadores aritméticos (*, /, -, +, %) solo funcionan con variables de tipo primitivo o Integer.
b) Creando una variable tipo Integer. Ejemplo del código:
import javax.swing.JOptionPane;
public class ejemplo1{
public static void main (String[] Args) {
String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
Integer i= 0;
System.out.println ("El doble del número introducido es: " + 2*i.valueOf(entradaUsuario));
}
}
Link de la clase: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=636:conversion-de-tipos-de-datos-en-java-tipado-ejemplos-metodo-valueof-error-inconvertible-types-cu00670b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188 (https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=636:conversion-de-tipos-de-datos-en-java-tipado-ejemplos-metodo-valueof-error-inconvertible-types-cu00670b&catid=68:curso-aprender-programacion-java-desde-cero&Itemid=188)
-
Buenos días.
El ejercicio es correcto.
En tu código,podrías cambiar las líneas:
Integer i= 0;
System.out.println ("El doble del número introducido es: " + 2*i.valueOf(entradaUsuario));
por
Integer i = Integer.valueOf(entradaUsuario); // Aquí le cambiamos el tipo String a integer, para poder realizar la operación en la siguiente línea
System.out.println ("El doble del número introducido es: " + 2*i);
Asi en caso de tener que volver a usar la variable i no tendrías que repetir la instrucción .valueOf(entradaUsuario cada vez que la usaras.
Por ejemplo para recibir el triple del numero y la mitad con tu código sería:
import javax.swing.JOptionPane;
public class ejemplo1{
public static void main (String[] Args) {
String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
Integer i= 0;
System.out.println ("El doble del número introducido es: " + 2*i.valueOf(entradaUsuario));
System.out.println ("El triple del número introducido es: " + 3*i.valueOf(entradaUsuario));
System.out.println ("La mitad del número introducido es: " + i.valueOf(entradaUsuario)/2);
}
}
que podrías reducirlo a :
import javax.swing.JOptionPane;
public class ejemplo1 {
public static void main (String[] Args) {
String entradaUsuario = JOptionPane.showInputDialog ( "Introduzca un número:" );
Integer i = Integer.valueOf(entradaUsuario); // Aquí le cambiamos el tipo String a integer, para poder realizar la operación en la siguiente línea
System.out.println ("El doble del número introducido es: " + 2*i);
System.out.println ("El triple del número introducido es: " + 3*i);
System.out.println ("La mitad del número introducido es: " + i/2);
}//Cierre del main
}//Cierre de la clase
Un saludo