Comparar 6 últimos valores recebidos de dispositivo

4 respostas
P

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.

4 Respostas

T

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 :stuck_out_tongue:
P

Valeu pela dica, vai ter que ser assim mesmo e com extremo cuidado com o ataque psicologico de uma cadeia de if()´s. :lol:

T

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 &lt 6; ++i) {
    if (!valoresRecebidos.get(0).equals (valoresRecebidos.get(i))  {
        ret = false;
        break;
    }
}

return ret;

P

Hehe, eu sei, só tava brincando.
Valeu.

Criado 1 de junho de 2007
Ultima resposta 4 de jun. de 2007
Respostas 4
Participantes 2