尝试显示错误消息,以便当用户输入错误三次时,它将显示错误消息"帐户被屏蔽"。为什么每次输入错误的引脚时pinAttempts ++都不会加1?
try {
int pinAttempts = 0;
int pin = Integer.parseInt(enterPinJTextField.getText());
if (pinAttempts == 3) {
JOptionPane.showMessageDialog(popupFrame, "Account blocked!");
}
if (pin != PIN) {
pinAttempts++;
JOptionPane.showMessageDialog(popupFrame, "Please enter correct pin!");
} else {
BankAccount application = new BankAccount();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
} catch (NumberFormatException exception) {
JOptionPane.showMessageDialog(popupFrame, "Please enter a number");
}
答案 0 :(得分:5)
因为您将其再次设置为0
int pinAttempts = 0;
答案 1 :(得分:4)
每次输入try语句时,都会将pinAttempts设置为0.这意味着它将被覆盖之前的任何内容。
您应该将pintAttempts = 0
移动到初始化发生的地方,这样才会发生一次。或者在一个可以重置用户的尝试计数器的方法中使用它。
答案 2 :(得分:1)
为什么pinAttempts ++每次错误的引脚都不会加1 输入
不用担心,这是你的理解是错误的。
每次使用
重新输入pinAttempts
块时,您需要意识到要将try
重新初始化为0
int pinAttempts = 0;
开头。
全局声明变量(在您的类的顶部),而不是在try/catch
块中声明它,它将起作用。
答案 3 :(得分:0)
问题是pinAttempts
一次又一次地使用值0
让你的pinAttempts
保持静态,或者在不会再次初始化的地方声明它,我会做这样的事情。
static int pinAttempts=0;
public boolean isLoginSuccessfull(){
//here do whatever you want to do .
}
每当用户尝试登录时,都会调用此登录成功,因此pinAttempts
将不会再次初始化,并且一旦您决定取消阻止,用户就会{{1}再次计算到pinAttempts