Hola toni_apr:
Con la respuesta que le has dado a la pregunta que hizo urdaneta88 de usar el método nextInt() he creado las siguientes clases:
Para la Clase entrada de Teclado:
import java.util.Scanner; //Importación de la clase Scanner desde la biblioteca Java
public class EntradaDeTeclado2 { // Definimos la clase EntradaDeTeclado aprenderaprogramar.com
private int entradaTeclado; //Variable de instancia (campo) del método
//Constructor
public EntradaDeTeclado2 () {
entradaTeclado=0; } //Cierre del constructor
public void pedirEntrada () { //Método de la clase
Scanner entradaEscaner = new Scanner (System.in);
int entradaTeclado = entradaEscaner.nextInt (); // Dará la entrada como INT primitivo
System.out.println ("valor devuelto desde la entrada del teclado :" + entradaTeclado);
} //Cierre del método pedirEntrada
public int getEntrada () {
System.out.println ("valor devuelto desde el get del teclado :" + entradaTeclado);
return entradaTeclado;
} //Cierre del método getEntrada
} //Cierre de la clase
La Clase del Main :
public class AdivinaNumero {
public static void main (String [ ] Args) {
Integer tmpInteger = 0;
EntradaDeTeclado2 entradaMain = new EntradaDeTeclado2();
System.out.println ("Bienvenido al programa ADIVINA el NÜMERO !!!");
System.out.println ("Intenta adivinar el número entre 1 y 100. ");
SerieDeAleatorios2 serieDePrueba = new SerieDeAleatorios2 ( (int) 1); // aquí paso la variable con el valor primitivo de la misma
serieDePrueba.generarSerieDeAleatorios();
int numAlea = serieDePrueba.getNumero() + 1;
System.out.println ("El número aleatorio es :" + numAlea);
System.out.print ("Teclea un número: ");
entradaMain.pedirEntrada();
tmpInteger = entradaMain.getEntrada() ;
while ( tmpInteger != numAlea) {
if ( tmpInteger > numAlea ) {
System.out.println ("No has acertado: el número es menor. Prueba otra vez");
}
else {
System.out.println ("No has acertado: el número es mayor. Prueba otra vez");
}
System.out.print ("Teclea un número: ");
entradaMain.pedirEntrada();
tmpInteger = entradaMain.getEntrada() ;
} // Cierre del while
System.out.println ("BIEN !!!! has acertado el número " + numAlea);
System.out.println ("Gracias por utilizar el programa");
} // Cierre del main
} //Cierre de la clase
Y la clase que genera el número aleatorio :
//Esta clase define objetos que contienen tantos enteros aleatorios entre 1 y 100 como se definan
public class SerieDeAleatorios2 {
//Campos de la clase
private ArrayList<Integer> serieAleatoria;
//Constructor
public SerieDeAleatorios2 (int numeroItems) {
serieAleatoria = new ArrayList<Integer> ();
//Inicializamos el ArrayList lleno de ceros
for (int i=0; i<numeroItems; i++) { serieAleatoria.add(0); }
//System.out.println ("Serie inicializada. El número de elementos en la serie es: " + getNumeroItems() );
} //Cierre del constructor
public int getNumeroItems() { return serieAleatoria.size(); } //Cierre del método
public void generarSerieDeAleatorios () {
Random numAleatorio;
numAleatorio = new Random ();
for (int i=0; i < serieAleatoria.size(); i++) {
serieAleatoria.set(i, numAleatorio.nextInt(100) );
}
//System.out.print ("Serie generada! ");
} //Cierre del método
public int getNumero () { //Método devuelve el único valor generado por Random
return serieAleatoria.get(0);
} //Cierre del método
public void mostrarSerie() {
System.out.print ("Procedemos a mostrar la serie: ");
for (Integer tmpObjeto : serieAleatoria) { //Uso de for each
System.out.print (" " + tmpObjeto.toString() ); } //Cierre del for extendido
// System.out.print (" " + tmpObjeto ); } //Cierre del for extendido
} //Cierre del método
} //Cierre de la clase
Al compilar no hay problema ninguno, pero cuando lo ejecuto, descubro que el get de la clase teclado me devuelve el valor 0, sin embargo cuando lo tecleo por el terminal veo que la variable entradaTeclado guarda el valor. ¿Que puede estar mal? o que proceso es erróneo?. Con String no tengo estos fallos.
Un saludo.