Autor Tema: Ejercicios CU00670B y CU00672B casting y generar aleatorios java  (Leído 4290 veces)

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Hola, esta es mi respuesta al ejercicio CU00670B

El mensaje de error:
bad operand types for binary operator "*"
first type: int; second type: java.lang.String

nos dice que el primer operando del operador binario '*' es de tipo int y el segundo de tipo String. Son operandos incompatibles
Debemos hacer una conversión de tipos, por ejemplo sustituir le línea errónea
Citar
System.out.println ("El doble del número introducido es: " + 2 * entradaUsuario);
por:
System.out.println ("El doble del número introducido es: " + 2 * Float.valueOf(entradaUsuario));

Ahora los dos tipos continúan siendo distintos, pero compatibles, el compilador no tiene ningún problema en convertir el int a Float. Y el resultado será Float.

------------------
Ejercicio CU00672B Trabajar con números aleatorios.
Clase AdivinaNumero.
Código: [Seleccionar]
import java.util.Random;
/**
 * Detalles de la clase.
 * @author (Toni)
 * @version (0)
 */
public class AdivinaNumero {             // Atributos de la clase AdivinaNumero
   
    //Constructor para objetos de la clase AdivinaNumero
    public AdivinaNumero() {            // Inicializa atributos
       
    } // Fin del constructor AdivinaNumero
   
    // Siguen los setters para los atributos de la clase AdivinaNumero
   
    // Ahora los getters para los atributos de la clase AdivinaNumero
   
    // Y seguidamente, metodos varios.
    public static void main (String [] args) {
        Random numAlea;
        numAlea = new Random();
        int numeroX = numAlea.nextInt(100) + 1; // numeroX estará entre 1 y 100
        Mensaje mensaje = new Mensaje ("Se ha generado un número aleatorio entreo entre 1 y 100, intente adivinarlo.");
        int intentos = 0, respuesta = -1;
        boolean intentaDeNuevo = true;
        do {
           respuesta = Integer.valueOf(mensaje.responde ("Intento nº" + (++intentos) + ":",0));
            mensaje.muestra (rellenaConCaracter(respuesta, '¬') + (respuesta) );
            if (respuesta == numeroX) {
                mensaje.muestra ("Respuesta correcta. Enhorabuena.");
                intentaDeNuevo =  false;
            }
            else if (respuesta < numeroX) {
                mensaje.muestra ("No ha acertado: El número es MAYOR. Pruebe otra vez.");
            }
            else {
                mensaje.muestra ("No ha acertado: El número es MENOR. Pruebe otra vez.");
            }
        } while (intentaDeNuevo); // fin del while
    } // fin del main
   
    private static String rellenaConCaracter (int numero, char c) {
        String respuesta ="";
        for (int i = 0; i < numero; i++) {
            respuesta = respuesta + c;
        }
        return respuesta;
    } // fin de RellenaConCaracter
} // Fin de la clase AdivinaNumero
Clase Mensaje
Código: [Seleccionar]
import java.util.Scanner;
/**
 * Detalles de la clase. El método presenta mensajes por pantalla... y devuelve entradas de teclado
 * @author (Toni)
 * @version (0)
 */
public class Mensaje { // Atributos de la clase Mensaje
    private String texto;
    private int valor;
    /**
     * Mostrará el texto con salto de línea final.
     */
    public Mensaje (String frase) { //Constructor 1 parámetro para objetos de la clase Mensaje. Inicializa atributos
        texto = frase;
        valor = 1;
        muestra (texto, valor);
    }

    /**
     * Muestra el texto con salto de línea o no según param.
     * Valores param:
     * 0 = Sin salto de línea.
     * 1, u otro valor = Con salto de línea.
     */ 
    public Mensaje (String frase, int param) {
        texto = frase;
        valor = param;
        muestra (texto, valor);
    }
    // Siguen los setters para los atributos de la clase Mensaje
    public void setTexto (String texto) { this.texto = texto; }

    public void setValor (int valor)    { this.valor = valor; }
    // Ahora los getters para los atributos de la clase Mensaje
    public String getTexto ()           { return texto; }

    public int getValor ()              { return valor; }

    // Y seguidamente, procedimientos y funciones varios.
    /**
     * Mostrar el texto con salto de línea (sin segundo parámetro)
     */   
    public void muestra (String frase) {
        muestra (frase, 1);
    }// fin de muestra 1 parámetro

    /**
     * Valores param:
     * 0 = Sin salto de línea.
     * 1, u otro valor = Con salto de línea.
     */   
    public void muestra (String frase, int param) {
        texto = frase;
        valor = param;
        if (valor == 0) { System.out.print (texto + " ");
        }          else { System.out.println (texto); }
    }// fin de muestra 2 parámetros

    /**
     * Sin segundo parámetro el mensaje incluirá salto de línea. Devuelve entrada de teclado
     */
    public String responde (String frase) {
        return responde (frase, 1);
    }// fin de responde 1 parámetro

    /**
     * Valores param:
     * 0 = Sin salto de línea + entrada por teclado.
     * 1, u otro valor = Con salto de línea + entrada por teclado.
     */
    public String responde (String frase, int param) {
        texto = frase;
        valor = param;
        muestra (texto, valor);
        Scanner entradaEscaner = new Scanner(System.in);
        return entradaEscaner.nextLine();
    }// fin de responde 2 parámetros
} // Fin de la clase Mensaje
Saludos.
« Última modificación: 31 de Agosto 2014, 19:02 por Alex Rodríguez »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Ejercicios CU00670B y CU00672B
« Respuesta #1 en: 15 de Julio 2014, 09:25 »
Hola toni:

Sobre CU00670B: respuesta correcta

Sobre CU00672B: correcto el código, además el efecto de rellenar gráficamente mostrando ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬ es una mejora que queda bastante bien.

Saludos,
Responsable de departamento de producción aprenderaprogramar.com

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Ejercicios CU00670B y CU00672B
« Respuesta #2 en: 15 de Julio 2014, 15:22 »
Hola César. Gracias por tus comentarios.

Saludos.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".