相等数组列表(Java)

相等数组列表(Java),java,arraylist,Java,Arraylist,.containsAll可以工作,但.equals不起作用。您每次都在添加数字。您应该使用局部变量或局部初始化。否则,每次调用函数时,您的密码列表都会多得到5个数字。我认为您在比较数组时遇到了问题。看看这个问题: 它应该是什么: if (digitList.size() == 5 && Arrays.equals(digitList, passcode)) { // are the two arrays CONTENT the same guideArea

.containsAll可以工作,但.equals不起作用。

您每次都在添加数字。您应该使用局部变量或局部初始化。否则,每次调用函数时,您的密码列表都会多得到5个数字。

我认为您在比较数组时遇到了问题。看看这个问题:

它应该是什么:

if (digitList.size() == 5 && Arrays.equals(digitList, passcode)) { // are the two arrays CONTENT the same
            guideArea.setText("Correct Password.");
            digitList.clear();
  }
因为你说的是“安全键盘”,我不得不说忽略别人说的技术上正确的东西,你是做错了。通过以“普通”格式存储密码,您也可以在键盘上留下一张带有密码的便签

您应该做的是对输入和密码进行散列,并比较散列后的版本。并且不要使用hashCode(),该函数在这方面是不可靠的。(示例)


另外,根据Java文档,是正确的检查方法。您无法处理列表实例。您应该逐步通过调试器,在代码中的任何地方都可以看到您所做的更改全局变量的操作。

显然,digitList和Password都是列表实例。所以digitList.contains(passcode))不可能返回true,因为整数列表不可能包含列表。它只包含整数。添加一些System.out.println()指令来打印两个列表,或者使用调试器digitList)的声明和实例化。这当然不是一个问题,在考虑upvote按钮之前,我需要解决这个大小的调试问题。OP使用的是列表,而不是数组
if (digitList.size() == 5 && Arrays.equals(digitList, passcode)) { // are the two arrays CONTENT the same
            guideArea.setText("Correct Password.");
            digitList.clear();
  }