Java - Me quede trabado en un pequeño juego. ayuda

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 8 puestos en Java (en relación al último mes)
Gráfica de Java

Me quede trabado en un pequeño juego. ayuda

Publicado por Matias (2 intervenciones) el 13/08/2018 19:10:28
Hola, esta es mi primera consulta en el foro. Recien arranco a programar y me quede trabajo en esto.
Mi consulta es sencilla. una vez que el jugador 1 ingresa la palabra, el jugador2 dice cuantas letras tiene, la siguiente vuelta vuelve a preguntarlo pero no espera respuesta. porque es?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.util.Scanner;
  public class palabras{
    public static void main(String args[]){
 
   Scanner teclado = new Scanner(System.in);
   String palabra1 = "", palabra2 ="", jugador1 = "", jugador2 = "";
   int letras = 0, respuesta = 0, puntaje_jugador1 = 0, puntaje_jugador2 = 0, puntaje_total = 10;
 
   System.out.println("Jugador 1, ingresa tu nombre");
   jugador1 = teclado.nextLine();
   System.out.println("Jugador 2, ingresa tu nombre");
   jugador2 = teclado.nextLine();
 
   System.out.println("Comencemos");
 
 do{
    do{
       System.out.println(jugador1 + " escribe una palabra.");
     palabra1 = teclado.nextLine();
       System.out.println(jugador2 + " dime cuantas letras tiene la palabra que escribio " + jugador1);
     respuesta = teclado.nextInt();
     letras = palabra1.length();
    if(respuesta == letras){
      puntaje_jugador2 +=1;
      System.out.println("Muy bien, has conseguido un punto. sumas " + puntaje_jugador2 + " puntos.");
    }else{
      System.out.println("Lo lamento, " + puntaje_jugador2 + " tu respuesta es equivocada, la respuesta era " + letras + " letras.");
      System.out.println("Es el turno de " + jugador2);
    }
    }while(respuesta == letras);
 
    do{
       System.out.println(jugador2 + " escribe una palabra.");
     palabra2 = teclado.nextLine();
       System.out.println(jugador1 + " dime cuantas letras tiene la palabra que escribio " + jugador2);
     respuesta = teclado.nextInt();
     letras = palabra2.length();
    if(respuesta == letras){
      puntaje_jugador1 +=1;
      System.out.println("Muy bien, has conseguido un punto. sumas " + puntaje_jugador1 + " puntos.");
    }else{
      System.out.println("Lo lamento, " + jugador1 + " tu respuesta es equivocada, la respuesta era " + letras + " letras.");
      System.out.println("Es el turno de " + jugador1);
    }
    }while(respuesta == letras);
 
 
   }while(puntaje_jugador1 != puntaje_total || puntaje_jugador2 != puntaje_total);
    if(puntaje_jugador1 == puntaje_total){
    System.out.println(jugador1 + " a conseguido " + puntaje_total + " y es el ganador. Gracias por participar!");
   }else
    System.out.println(jugador2 + " a conseguido " + puntaje_total + " y es el ganador. Gracias por participar!");
 }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Me quede trabado en un pequeño juego. ayuda

Publicado por Daniel (2 intervenciones) el 13/08/2018 22:20:06
El problema es que no limpias el buffer del Scanner, solo tienes que añadir: teclado.nextLine(); al final de cada do-while (ANTES DEL WHILE) para que se limpie antes de comenzar la siguiente vuelta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
do{
System.out.println(jugador1 + " escribe una palabra.");
palabra1 = teclado.nextLine();
System.out.println(jugador2 + " dime cuantas letras tiene la palabra que escribio " + jugador1);
respuesta = teclado.nextInt();
letras = palabra1.length();
if(respuesta == letras){
puntaje_jugador2 +=1;
System.out.println("Muy bien, has conseguido un punto. sumas " + puntaje_jugador2 + " puntos.");
}else{
System.out.println("Lo lamento, " + puntaje_jugador2 + " tu respuesta es equivocada, la respuesta era " + letras + " letras.");
System.out.println("Es el turno de " + jugador2);
}
 
teclado.nextLine();     //aqui ****************************************************************************************************
 
}while(respuesta == letras);
 
 
 
do{
System.out.println(jugador2 + " escribe una palabra.");
palabra2 = teclado.nextLine();
System.out.println(jugador1 + " dime cuantas letras tiene la palabra que escribio " + jugador2);
respuesta = teclado.nextInt();
letras = palabra2.length();
if(respuesta == letras){
puntaje_jugador1 +=1;
System.out.println("Muy bien, has conseguido un punto. sumas " + puntaje_jugador1 + " puntos.");
}else{
System.out.println("Lo lamento, " + jugador1 + " tu respuesta es equivocada, la respuesta era " + letras + " letras.");
System.out.println("Es el turno de " + jugador1);
}
 
teclado.nextLine();     //aqui ****************************************************************************************************
 
}while(respuesta == letras);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 4
Ha aumentado su posición en 8 puestos en Java (en relación al último mes)
Gráfica de Java

Me quede trabado en un pequeño juego. ayuda

Publicado por Matias (2 intervenciones) el 15/08/2018 10:10:13
Gracias capo. Ahi lo limpie y corre perfecto. Saludos..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar