Preciso clicar várias vezes no botão para então ele realizar a ação

Criei um negócio que me gera alguns valores (pares) aleatórios. O problema é que eu preciso clicar umas 4 vezes no botão para então ele começar a gerar os números. Pelo que eu entendi (eu acho) é porque como quero apenas números pares, quando cai número impar, ele não faz nada, mas como eu arrumo isso?

double dmgM = 4 + Math.random() * (11 - 1); //Dano mínimo 4 e máximo 12
int damageM = (int) dmgM; //convertendo a variável dmgM (double) para int     
//criar condição IF para selecionar apenas números pares
if (damageM % 2 == 0) 
{
    //convertendo int para string para mostrar no jLabel
    lblDamageM.setText(Integer.toString(damageM)); 
}

Você teria que tratar isso com um laço de repetição, para que ele gere todos os números pares de uma só vez com um único clique.

Mas eu não quero que gere todos os números pares de uma vez. Quero um numero par aleatório a cada vez que eu clicar, entende?

Entendi, mas você vai ter que usar um laço de repetição da mesma forma!
O laço será executado enquanto o número obtido for ímpar, caso seja par, saia do laço e imprima o número!

1 curtida

Gere um número aletatório qualquer e multiplique o número gerado por 2, logo sempre terá um número par.

1 curtida

Uma outra opção seriasomar ou subtrair 1 do número em caso de número ímpar.

Obrigado pelas sugestões. Fiz o seguinte e deu certo:
Adicionei o seguinte…

    } else if (damageM % 2 == 1) {
        damageM = damageM + 1;
        lblDamageM.setText(Integer.toString(damageM));
    }

Vou dar só uma sugestão no seu código, você poderia adicionar somente:

} else {
        damageM = damageM + 1;
        lblDamageM.setText(Integer.toString(damageM));
    }

Não sendo necessário testar o valor damageM novamente, pois se o mesmo for par ele entra na condição do if, caso contrário se for ímpar automaticamente ele vai pro else, atendendo o problema com um teste a menos.

1 curtida

ah, entendi… Vlw ae, deixou mais enxuto!