我想问一下,每次运行程序时,我的错误导致if语句为false。我还尝试使用.equals(num)
而不是Array.asList(num)
来检查值是否在那里,但这导致for循环多次重复“Not in database”。
答案 0 :(得分:3)
Arrays.asList(Data)
创建一个列表,其唯一元素是int数组(即List<int[]>
)。这就是Arrays.asList(Data).contains(num))
总是返回false的原因。
尝试将阵列更改为:
Integer Data[] = new Integer[n];
这将使Arrays.asList(Data)
创建一个包含原始数组所有整数的Integer
(List<Integer>
)列表,这正是您所需要的。
此行为的原因是Arrays.asList
需要一个或多个Object
作为输入。如果传递Object
的数组(例如Integer[]
),则相当于传递多个Object
。但是,如果传递一个基元数组(例如int[]
),则输入中唯一的Object
是数组本身,因此Arrays.asList()
创建一个列表,其唯一的元素是该数组