我有一种遇到问题的方法。下面的第二个方法hintForForPinNumber()调用第一个方法canConvertToInteger(),然后根据布尔变量pinValid的值是true还是false来执行操作。
当我自己执行方法canConvertToInteger()时,它的功能很好,并且pinValid的值正确。
当我执行hintForForPinNumber()并输入一个引发异常的字符串时,pinValid的值保持为true,因此if else块的else部分未执行,但是pinTry的值为0,因此必须有一个异常已经被抓到并处理了。那么为什么当pinValid的布尔值应该为false时才为true?
应该发生的情况是,如果在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;
}
}
最佳答案
经典一,更换
if (pinValid = true)
与:
if (pinValid == true)
甚至更好:
if (pinValid)
pinValid = 1
是赋值,而不是表达式(条件)。关于java - 执行方法时 boolean 值不保存值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29546107/