Hola calderas
Ejercicio correcto. Cumple su función, crear un número aleatorio y en un bucle while intentar adivinarlo en sucesivos intentos. Bien.
Además has realizado una colección de clases que todas juntas llegan a buen fin. Bien. Esto te servirá para proyectos más grandes.
Pero, sin menoscabar tu trabajo, aquí van unos comentarios.
En programación se usa la lógica de: ante un problema complejo, afrontarlo partiéndolo en varios componentes, y solucionar estos de uno en uno.
Pero esto no es lo mismo que dividir las 100 líneas de un código en cuatro módulos de 25 líneas cada una y llamarlos en el orden adecuado. Esto falsea el principio de: Divide y vencerás.
Además la compartimentación del código en varias clases tiene el propósito de que estas clases sean recipientes de código válidos para otras ocasiones sin cambiar su contenido.
Tu clase NumeroAleatorio solo te sirve para los cien primeros enteros.
La clase DeStringAInt si que sirve para cualquier ocasión de convertir un String a int, pero una solo línea de código puede sustituir a toda la clase.
Tu clase EntradaTeclado, es operativa, pero para obtener el String deseado has de ejecutar dos instrucciones cada vez.
Te adjunto una versión compacta de tu ejercicio. (+ compacto, + eficiente)
import java.util.Random;
import java.util.Scanner;
public class AdivinaElNumeroBis
{
public static void main(String[]args){
Random aleatorioNumero = new Random();
int valorSecreto = aleatorioNumero.nextInt(100) + 1;
System.out.println("Se ha generado un número aleatorio entre 1 y 100, intente adivinarlo");
Scanner inputKB = new Scanner(System.in);
System.out.println("La KGB nos informa que el numero secreto es: " + valorSecreto);
// int numeroTecleado = inputKB.nextInt();
int numeroTecleado = Integer.valueOf(inputKB.nextLine());
while (numeroTecleado != valorSecreto) {
if (numeroTecleado < valorSecreto) {
System.out.println("No has acertado, el número secreto es mayor. Prueba otra vez");
} else {
System.out.println("No has acertado, el número secreto es menor. Prueba otra vez");
}
numeroTecleado = inputKB.nextInt();
// numeroTecleado = Integer.valueOf(inputKB.nextLine());
}
System.out.println("Enhorabuena!! has acertado");
}
}
Estas dos líneas se puede intercambiar, hacen lo mismo.
numeroTecleado = inputKB.nextInt();
numeroTecleado = Integer.valueOf(inputKB.nextLine());
Saludos