Pessoal tenho um loop que le um disposito e carrega a string de leitura e manda para um variável, e fica lendo até eu finalizar a aplicação, até aí tudo certo.
Agora preciso ir comparando os valores conforme são recebidos e se os 6 últimos forem iguas preciso startar um outro processo.
Alguém pode me ajudar quanto a uma forma inteligente de se fazer isso? Pensei eu usar if() ou while() mas vai ficar muito POG.
Crie uma classe que tem 3 métodos:
- configurarNumeroValoresRepetidos
Este método serve para você dizer quantos valores devem estar repetidos (e além disso serve para limitar a quantidade de valores recebidos que devem ser lembrados). No seu caso você vai passar o valor 6. - adicionarValorRecebido
Este método serve para você adicionar o último valor recebido a uma lista dos últimos valores recebidos. Para a lista não ficar muito grande, se passar do máximo (que, por exemplo, foram 6), você remove o valor antigo se for o caso. - checarUltimosValoresRepetidos
Este método é que faz a comparação dos últimos X valores recebidos.
É claro que tem “ifs” e “whiles”, mas você os isolou em um lugar onde não possam ser muito perigosos para sua saúde mental
Valeu pela dica, vai ter que ser assim mesmo e com extremo cuidado com o ataque psicologico de uma cadeia de if()´s. :lol:
Você não precisa de uma cadeia de ifs; só um for e um if, e um flag. Algo parecido com:
boolean ret = true;
for (int i = 1; i < 6; ++i) {
if (!valoresRecebidos.get(0).equals (valoresRecebidos.get(i)) {
ret = false;
break;
}
}
return ret;
Hehe, eu sei, só tava brincando.
Valeu.