java - Simulador de caixa eletrônico no Android Studio - Stack Overflow em Português
Estou montando um simulador básico de caixa eletrônico no Android Studio, onde o usuário deve digitar a senha, que já está pré-definida, no caso é "Java". Caso a senha esteja certa, aparece a mensagem "Senha Correta", se estiver errada, aparece a mensagem "Senha Incorreta" na tela. Se o usuário errar 3 vezes a senha, aparecerá uma mensagem "Cartão Bloqueado", e é basicamente isso. Mas com meu código, quando a senha está correta, a mensagem aparece certa, já se a senha está errada ele apenas mostra "Cartão Bloqueado", sem passar pela mensagem "Senha Incorreta", queria saber se fiz algo de errado. Segue o código:
EditText digito;
Button entrar;
String senha = "Java";
digito = (EditText) findViewById(R.id.editText1);
entrar = (Button) findViewById(R.id.btnEntrar);
public void Verificacao(View view) {
if (digito.getText().toString().equals(senha)) {
res.setText("Senha Correta");
}else if (i == 3) {
res.setText("Cartão Bloqueado");
res.setText("Senha Incorreta");
perguntada 20/03/20 às 20:12
O que está acontecendo é que quando você clica no botão você chama o método Verificacao. Quando esse método é chamado, ele verifica 4 vezes (está dentro de um for) para i = 0, 1, 2 e 3.
Para alcançar o comportamento correto, você deve contar numa variável externa ao método:
int tentativa = 0;
} else if (tentativa == 3) {
tentativa++; // Na primeira chamada, tentativa = 1
Desse jeito, caso o usuário erre na terceira vez em diante, aparecerá a mensagem "Cartão Bloqueado". Isso acontece porque passei a começar a partir de 1 ao invés de 0, como no seu for, e porque estou somando somente quando ele erra e o cartão não está bloqueado.
Dica: Não é uma boa prática um método começar com uma letra maiúscula, recomendo renomeá-lo para verificacao ou até mesmo para verificarSenha, que torna mais explícito o que ele verifica.
Observação: Parti do pressuposto de que a sua função Verificacao está sendo chamada uma vez quando o usuário clica no botão. Não é possível dizer se isso realmente acontece ou não com base no código que você compartilhou (imagino que você tenha colocado no XML). Caso deseje atrelar um onClick ao botão na criação da Activity (no código Java):
entrar.setOnClickListener(new OnClickListener() {
verificacao(v)
editada 20/03/20 às 21:00
respondida 20/03/20 às 20:36
4.32099 medalhas de ouro2121 medalhas de prata3939 medalhas de bronze
Eu referenciei o próprio método na propriedade onClick do XML. E eu acabei de testar sua ideia e deu certo, só que o comportamento não ficou como eu queria, então coloquei o tentativas++ dentro do else e não dentro do if, e funcionou corretamente. E sua dica sobre o método em letra maiúscula começarei a ter este hábito. – Leo 20/03/20 às 20:57
De fato, o tentativas++ estava no local errado. Já editei na resposta. Se esta resposta resolveu o seu problema e não restou nenhuma dúvida, marque-a como correta/aceita ao clicar no "✅" que está ao lado dela, o que também marca a sua pergunta como resolvida. Se ainda te resta alguma dúvida ou gostaria de maiores esclarecimentos, fique a vontade para comentar. 😊 – Rafael Tavares 20/03/20 às 21:01
Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag java android android-studio xml android-layout ou faça sua própria pergunta.