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
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.
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
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.