.containsAll会工作,但.equals不起作用。
答案 0 :(得分:2)
您每次都会添加这些数字。您应该使用局部变量或本地初始化。否则,每次调用函数时,您的密码列表都会获得5个以上的数字。
答案 1 :(得分:0)
因为你说的是“安全键盘”,我不得不说忽略其他人所说的技术上正确的,你做错了。通过以“普通”格式存储密码,您可以在键盘上留下粘滞便笺,上面有密码。
您应该做的是对输入和密码进行散列并比较散列版本。并且不要使用hashCode(),该函数不可靠用于此目的。 (how to hash)的例子
另外,根据Java Docs,equals是正确的检查方法。您错过了处理列表实例。您应该单步执行调试器,以查看代码中的任何位置,以便执行更改全局变量的操作。
答案 2 :(得分:-1)
我认为您在比较阵列时遇到问题。看看这个问题:equals vs Arrays.equals in Java
if (digitList.size() == 5 && digitList.equals(passcode)) { // are the arrays the same array?
guideArea.setText("Correct Password.");
digitList.clear();
}
应该是什么:
if (digitList.size() == 5 && Arrays.equals(digitList, passcode)) { // are the two arrays CONTENT the same
guideArea.setText("Correct Password.");
digitList.clear();
}