count ++不在if语句中工作

时间:2015-02-11 19:40:13

标签: java

尝试显示错误消息,以便当用户输入错误三次时,它将显示错误消息"帐户被屏蔽"。为什么每次输入错误的引脚时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");
}

4 个答案:

答案 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