Java - Ayuda por favor, código java

 
Vista:

Ayuda por favor, código java

Publicado por Marcos (5 intervenciones) el 31/08/2019 21:14:38
Hola necesito ayuda con esto, el contador ( cont ) no sube de 1

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
Scanner teclado=new Scanner(System.in);
 
System.out.println("Ingrese su Nombre");
String Nombre=teclado.nextLine();
System.out.println("Ingrese su Cédula de Identidad");
String ci=teclado.nextLine();
 
int a[]={1,2,3,4};
 
 
int pos=0;
int cant=0;
 
 
boolean esta=false;
System.out.println("Ingrese 5 números");
 
 
 
 
for (int i=0;i<a.length + 1;i++){
 
    System.out.println("Ingrese el número " + (i+1) );
    int nro = teclado.nextInt();
 
    while (pos<a.length){
 
        esta=false;
        if (a[pos]==nro){esta=true;}
        if (a[pos]!=nro){esta=false;}
        if (esta){cant++;}
        pos++;
 
    }
 
}
 
System.out.println("La cantidad es " + cant);
 
}
}
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 por favor, código java

Publicado por Kabuto (1381 intervenciones) el 31/08/2019 22:40:34
Hola.

El problema está en que no estás reiniciando la variable pos tras cada búsqueda.

Cuando hace la primera búsqueda para ver si el número introducido está en el array, la variable pos se incrementa para comprobar cada posición del array, hasta alcanzar el valor 5, con lo cuál termina el while y concluye la búsqueda.
Pero para la siguiente búsqueda, pos conserva el valor incrementado. Por ello, cuando se introducen el resto de números, el bucle while de búsqueda no se ejecuta, porque pos tiene valor 5 y entonces no se cumple la condición: (pos < a.length)

Por eso en realidad, solo te hace una búsqueda, aunque introduzcas 5 números.
Para solucionarlo, te basta con reiniciar la variable pos a valor 0 después de que termine el while de búsqueda:

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 teclado=new Scanner(System.in);
 
    System.out.println("Ingrese su Nombre");
    String Nombre=teclado.nextLine();
    System.out.println("Ingrese su Cédula de Identidad");
    String ci=teclado.nextLine();
 
    int a[]={1,2,3,4};
    int pos=0;
    int cant=0;
    boolean esta=false;
 
    System.out.println("Ingrese 5 números");
 
    for (int i=0;i<a.length + 1;i++){
 
        System.out.println("Ingrese el número " + (i+1) );
        int nro = teclado.nextInt();
 
        while (pos<a.length){
 
            esta=false;
            if (a[pos]==nro){esta=true;}
            if (a[pos]!=nro){esta=false;}
            if (esta){cant++;}
            pos++;
        }
        pos = 0; //Reiniciamos pos
 
    }
 
    System.out.println("La cantidad es " + cant);
 
}



Por cierto, no necesitas usar un boolean, te lo puedes ahorrar.
Dentro del while de búsqueda te basta con preguntar si el número coincide en cuyo caso aumentas el contador.
No necesitas preguntar si NO coincide, porque si no coincide, no hay que hacer nada.

Y otra cosa, en el bucle for, para conseguir el valor 5 usas la longitud del array (que es 4) y le sumas 1.
for (int i=0;i<a.length + 1;i++)
Esto es un poco raro, y además, innecesario.
Si tu programa tiene que pedir 5 números, usa directamente el valor 5 en la condición, no es necesario hacer combinaciones extrañas:
for (int i=0;i<5;i++)

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
public static void main(String[] args) {
    Scanner teclado=new Scanner(System.in);
 
    System.out.println("Ingrese su Nombre");
    String Nombre=teclado.nextLine();
    System.out.println("Ingrese su Cédula de Identidad");
    String ci=teclado.nextLine();
 
    int a[]={1,2,3,4};
    int pos=0;
    int cant=0;
 
    System.out.println("Ingrese 5 números");
 
    for (int i=0;i<5;i++){
 
        System.out.println("Ingrese el número " + (i+1) );
        int nro = teclado.nextInt();
 
        while (pos<a.length){
 
            if (a[pos]==nro)
                cant++;
 
            pos++;
        }
        pos = 0; //Reiniciamos pos
 
    }
 
    System.out.println("La cantidad es " + cant);
}
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

Ayuda por favor, código java

Publicado por Marcos (5 intervenciones) el 31/08/2019 22:51:45
Muchas Gracias!!!!
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