boolean在执行方法时不保持值

时间:2015-04-09 18:23:53

标签: java if-statement boolean

我有一个方法,我遇到了问题。下面的第二个方法promptForPinNumber()调用第一个方法canConvertToInteger(),然后根据布尔变量pinValid的值是true还是false来执行操作。

当我自己执行canConvertToInteger()方法时,它运行正常,并且pinValid的值是正确的。

当我执行promptForPinNumber()并输入一个抛出和异常的字符串时,pinValid的值保持为true,因此if else块的else部分不会执行,但是,pinTry的值为0,所以必须抓住并处理一个例外。那么为什么pinValid的布尔应该为假时为真?

如果在OUDialog.request框中输入了无效条目,则应将pinValid设置为false,然后将pinTry的值更改为0,并且

  public boolean canConvertToInteger()
   {
      String pinAttempt;
      {
         pinAttempt = OUDialog.request("Enter your pin number");
         try
         {
            this.pinTry=Integer.parseInt(pinAttempt);
            this.pinValid = true;
         }
          catch (NumberFormatException anException)
        {
            this.pinTry=0;
            this.pinValid = false;
        }
      }
       return this.pinValid;
   }

  public int promptForPinNumber()
       {
          this.canConvertToInteger();
          if (pinValid = true)
          {
             return this.pinTry;
          }
           else
          {
             OUDialog.alert("Number entered is not a valid pin");
             return this.pinTry;
          }
       }

1 个答案:

答案 0 :(得分:2)

经典之一,替换

if (pinValid = true)

使用:

if (pinValid == true)

甚至更好:

if (pinValid)

pinValid = 1作业,而不是表达式(条件)。