Foros aprenderaprogramar.com
		Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: toni_apr en 14 de Julio 2014, 08:32
		
			
			- 
				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.
- 
				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,
- 
				Hola César. Gracias por tus comentarios.
 
 Saludos.