Verificação de array no loop

5 respostas
magocebolinha

Dêem uma olhada neste código.

import java.util.*;

class TesteRandArray {
	
	public static void main (String args[]){
	Scanner scn = new Scanner(System.in);
	int rand = (int) (Math.random() * 6);
	int num,numAcertos = 0;
	int [] array1 = {rand, rand-1, rand-2};
	System.out.println("O número excolhido era: "+ rand); // esta linha coloquei somente para ver se ele achava o numero randômico.
	System.out.println("A segunda posição do array é: "+ array1[2]);      // esta linha para ver se a 2º posição do array corresponderia a rand-2  estas são duas linhas                   //de teste


	System.out.println("Digite o numero para teste.");
	
	
       for(int x =0;x<4;x++){
	       num = scn.nextInt();
	       
	       for(int i =0;i<3;++i){
		            if (array1[i] == num){
		            System.out.println("Voce acertou!");
		            numAcertos +=1;
		            break;
	            	           
	                }else{
		                System.out.println("Você errou");
		                break;
	                }
                }
	                 if (numAcertos == 3) {
			         System.out.println("Voce acertou os três!");
			         break;
		            }
	          }
              
	            
      
	   System.out.println("JOGO TERMINADO");
	     		
}	
}

o problema aqui é dentro do loop, ele não leva em consideração a 2º e 3º posição do array… se ele escolhe 4 eu coloco 4 ele informa que eu acertei… mas se eu coloco 3 ou 2 ele informa que está errado! :roll:

5 Respostas

1

Com ++i ao inves de i++ ele nao esta so verificando 2 posicoes do array?

evertonsilvagomesjav
magocebolinha:
Dêem uma olhada neste código.
import java.util.*;

class TesteRandArray {
	
	public static void main (String args[]){
	Scanner scn = new Scanner(System.in);
	int rand = (int) (Math.random() * 6);
	int num,numAcertos = 0;
	int [] array1 = {rand, rand-1, rand-2};
	System.out.println("O número excolhido era: "+ rand); // esta linha coloquei somente para ver se ele achava o numero randômico.
	System.out.println("A segunda posição do array é: "+ array1[2]);      // esta linha para ver se a 2º posição do array corresponderia a rand-2  estas são duas linhas                   //de teste


	System.out.println("Digite o numero para teste.");
	
	
       for(int x =0;x<4;x++){
	       num = scn.nextInt();
	       
	       for(int i =0;i<3;++i){
		            if (array1[i] == num){
		            System.out.println("Voce acertou!");
		            numAcertos +=1;
		            break;
	            	           
	                }else{
		                System.out.println("Você errou");
		                break;
	                }
                }
	                 if (numAcertos == 3) {
			         System.out.println("Voce acertou os três!");
			         break;
		            }
	          }
              
	            
      
	   System.out.println("JOGO TERMINADO");
	     		
}	
}

o problema aqui é dentro do loop, ele não leva em consideração a 2º e 3º posição do array... se ele escolhe 4 eu coloco 4 ele informa que eu acertei... mas se eu coloco 3 ou 2 ele informa que está errado! :roll:

Vamos por parte essa linha do seu codigo vc nao verifica a segunda posição e sim a terceira (0,1,2):
System.out.println("A segunda posição do array é: "+ array1[2]);      // esta linha para ver se a  posição do array corresponderia a rand-2  estas são duas linhas                   //de teste

E so vc tirar o else daquele if do vc acertou que vai ficar certo e sua pergunta tem que estar dentro do for.

for(int x =0;x<4;x++){   
	    	    System.out.println("Digite o numero para teste.");   
	 	       
	           num = scn.nextInt();   
	             
	           for(int i =0;i<3;++i){   
	        	   System.out.println(i);
	        	   
	                    if (array1[i] == num){   
	                    System.out.println("Voce acertou!");   
	                    numAcertos +=1;   
	                 break;
	                                 
	                    }
	                }   
	                     if (numAcertos == 3) {   
	                     System.out.println("Voce acertou os três!");   
	                     break;   
	                    }   
	              }   
	                 
	                   
	         
	       System.out.println("JOGO TERMINADO");
marcelo.bellissimo

Voce tá dando um break nos dois casos do IF, a variável 'i' nunca vai ser incrementada... isso se chama Dead Code... reveja a lógica desse IF ai...

for (int i = 0; i < 3; i++) {
				System.out.println("I ==========  : " + i);
				if (array1[i] == num) {
					System.out.println("Voce acertou!");
					numAcertos += 1;
					break; // <- break aqui

				} else {
					System.out.println("Você errou");
					break; // <- e break aqui tbm ?
				}
			}
M

No for ++i ou i++ ocorre depois que o corpo do loop for executado.

Boa sorte!

evertonsilvagomesjav
marcelo.bellissimo:
Voce tá dando um break nos dois casos do IF, a variável 'i' nunca vai ser incrementada... isso se chama Dead Code... reveja a lógica desse IF ai...
for (int i = 0; i < 3; i++) {
				System.out.println("I ==========  : " + i);
				if (array1[i] == num) {
					System.out.println("Voce acertou!");
					numAcertos += 1;
					break; // <- break aqui

				} else {
					System.out.println("Você errou");
					break; // <- e break aqui tbm ?
				}
			}

ou tirar o break do else igual o amigo disse que funcionará tb =D

Criado 8 de abril de 2010
Ultima resposta 8 de abr. de 2010
Respostas 5
Participantes 5