Java - ayuda for puntaje

 
Vista:

ayuda for puntaje

Publicado por juan (3 intervenciones) el 18/12/2018 23:32:09
Hola queria saber si me podian ayudar ya que quiero poner un ciclo for para sacar un puntaje y al hacerlo me sale como puntaje cero (el puntaje tiene que decrecer de 10 en 10 con cada intento empezando desde 100).

les dejo el codigo:


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
package adivinar_numero;
 
import java.util.Scanner;
 
public class Adivinar_Numero {                                                                    /*Realizar un juego para adivinar un 
                                                                                                            número. Para ello pedir un número N, y luego 
                                                                                                                                       ir pidiendo
                                                                                                                            números indicando “mayor” o 
                                                                                                                        “menor” según sea mayor o menor 
                                                                                                                    con respecto a N. El proceso termina
                                                                                                                            cuando el usuario acierta AÑADIR 
                                                                                                                                           PUNTAJE*/
 
 
 
    public static void main(String[] args) {
 
 
    Scanner in = new Scanner(System.in);
 
    int       num     =   0;
    int   numero = 47;
    int i;
 
    System.out.println("- ADIVINA EL NUMERO -");
    num  = in.nextInt();
 
    while(num  != numero){
    for( i = 100; i > 0; i = i - 10  ){
            if(num < numero){
 
            System.out.println("El numero es mayor!!");
            num = in.nextInt();
 
            }else if(num > numero){
 
            System.out.println("El numero es menor!!");
            num = in.nextInt();
 
        }
      }
       if(num == numero){
 
            System.out.println("Acertaste!!!");
 
       }
 
            System.out.println("Tu puntaje es: " + i);
      }
    }
}


gracias :D.
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

ayuda for puntaje

Publicado por Kabuto (1381 intervenciones) el 19/12/2018 00:35:38
Hola.
El problema está en el for.
Su condicion para repetirse es que i sea mayor que 0
1
for( i = 100; i > 0; i = i - 10 )

Esto significa que no va a importar si aciertas o no el numero. El bucle for seguirá repitiendose hasta que la i deje de ser mayor que cero.
Por eso siempre obtienes puntaje = 0.

El bucle while prácticamente no tiene importancia en ese código, ya que no va a poder comprobar su propia condicion hasta que el bucle for haya terminado de reducir la i a valor 0. Así que el while es prácticamente irrelevante.

Lo que has de hacer es cambiar la condicion de repeticion del bucle for. Añadele la condicion del while (y elimina el while) de modo que sea el for quien controle las dos posibles condiciones de repeticion:
- que la i sea mayor que 0 Y que num sea distinto de numero

Podría quedar así el programa:
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
public static void main(String[] args) {
 
 
    Scanner in = new Scanner(System.in);
 
    int num = 0;
    int numero = 47;
    int i;
 
    System.out.println("- ADIVINA EL NUMERO -");
    num = in.nextInt();
 
    for( i = 100; i > 0 && (num != numero); i = i - 10 ){
        if (num < numero){
 
            System.out.println("El numero es mayor!!");
            num = in.nextInt();
 
        }else if(num > numero){
 
            System.out.println("El numero es menor!!");
            num = in.nextInt();
 
        }
    }
    if (num == numero){
 
        System.out.println("Acertaste!!!");
 
    }
 
 
    System.out.println("Tu puntaje es: " + i);
    in.close();
}

Por otra parte, usar un for para calcular el puntaje del usuario probablemente no sea la mejor opción. Este bucle no está pensado para eso.
Es más fácil de implementar, y también de leer, crear una variable con valor 100 y que vaya decrementándose cada vez que el usuario falla al acertar.
Podría quedar así:

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
public static void main(String[] args) {
 
    Scanner in = new Scanner(System.in);
    int num = 0;
    int numero = 47;
    int puntaje = 100;
 
    System.out.println("- ADIVINA EL NUMERO -");
 
    while(puntaje > 0 && num != numero)
    {
        num = in.nextInt();
        if (num == numero)
            System.out.println("Acertaste!!!");
        else
        {
            puntaje -= 10; //Pierde 10 puntos por no acertar
            if (num < numero)
                System.out.println("El numero es mayor!!");
            else
                System.out.println("El numero es menor!!");
        }
    }
    System.out.println("Tu puntaje es: " + puntaje);
    in.close();
}
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