Buscar valores numa lista de outra lista

8 respostas
Q

pessoal, estou desenvolvendo um sistema que cadastra 25 dezenas numa lista
e depois crio 15 dezenas sorteadas(bingo) e quero verificar quantas dezenas acertei das 25 cadastradas.

int acerto;
    for(int i=0;i<24;i++){
         for(int j=0;j<=14;){
              if(listaCadastrada.get(i)==listaSorteada.get(j)){
                        acerto++;
              }else{
                      j++;
              }
         }
    }

fiz assim, pra mim esta certo mas nao dá
da uma excessao memory heap space

8 Respostas

A

Está dando loop infinito, seu j não está sendo incrementado nunca.

Q

Por favor, se algum tiver uma dica
fazer de outra forma mas que de certo…
fico muito grato

Q

mas como fazer entao?

A

Pode tentar inverter seu for também.
Vai verificar se seus números sorteados estão em seus números registrados.

int acerto; for(int j=0;j<=14; j++){ for(int i=0;i<24;i++){ if(listaCadastrada.get(j)==listaSorteada.get(i)){ acerto++; } } }

Q

e se nao for igual,
eu tenho que incrementar i++ no ‘else’ nao?

A

Uai, não precisa o próprio for já faz esse incremento.
Se você for incrementar somente quando não for igual pode acontecer o loop infinito, pois quando o valor for encontrado vai não vai haver incremento e ai irá acontecer o loop…

A ordem dos for ai não inflige no funcionamento. Você pode fazer seu for anterior, so colocar o j++ no for e retira seu else.

caio_ferreira

vc pode fazer assim

List<Integer> numeros = Arrays.asList(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);
		List<Integer> sorteados = Arrays.asList(26,48,8,33,55,60,12,13,16,18,19,20,23,24,25);
		
		int acertos = 0;
		
		for(Integer n : sorteados){
			if(numeros.contains(n)){
				acertos++;
			}
		}
		
		System.out.println("Números de acertos: " + acertos);
Q

vlw, vou tentar.
Obrigado

Criado 27 de julho de 2012
Ultima resposta 27 de jul. de 2012
Respostas 8
Participantes 3