3 回答
TA贡献1895条经验 获得超3个赞
在整个数组上进行迭代后,您缺少停止循环的条件。例如:
while (!done) {
tmp = PinsNums[i];
if (tmp.equals(keyPadNumsEntered)) {
result = PinNames[i];
loggedOn = true;
done = true;
} else {
++i;
result = "no logon";
}
if (i == PinsNums.length) {
done = true;
}
}
TA贡献1752条经验 获得超4个赞
您正在使用的while循环和完成的布尔值都完全没有必要。您收到此异常的原因是,如果'tmp'永远不等于'keyPadNumsEntered',该怎么办?它将继续进行迭代,从而导致IndexOutOfBoundsException。这将作为for循环更具可读性,并且应防止出现异常:
public void exportVarifaction(){
String[] PinsNums = new String[]{"1415","1678","1923"};
String[] PinNames = new String[]{"admin","test","test1"};
String tmp;
for (int i = 0; i < PinsNums.length; i++) {
tmp = PinsNums[i];
if (tmp.equals(keyPadNumsEntered)) {
result = PinNames[i];
loggedOn = true;
break;
}
}
if (!loggedOn) {
result = "no logon";
}
}
TA贡献2003条经验 获得超2个赞
您需要通过检查变量i和数组的长度来检查数组上的循环是否完成。
while (!done && i<PinsNums.length) {
tmp = PinsNums[i];
if (tmp.equals(keyPadNumsEntered)) {
result = PinNames[i];
loggedOn = true;
done = true;
} else {
++i;
result = "no logon";
}
}
添加回答
举报