检查给定输入是否在Array中时出现问题。以下是我编写的示例代码。出于某种原因,无论我输入什么,即使数字在数组中,也输出“不好”。任何建议或帮助将不胜感激。
public static void main (String[] args) {
Scanner input = new Scanner(System.in);
int array [] = new int[10];
System.out.println("Please enter the 10 positive integers for BST:");
for (int i = 0 ; i < array.length; i++ ) {
array[i] = input.nextInt();
}
System.out.println("Enter node to delete");
if (Arrays.asList(array).contains(input.nextInt())){
System.out.println("ok");
} else
System.out.println("not Okay");
}
答案 0 :(得分:2)
Arrays.asList(array)
会将int[] array
转换为List<int[]>
,然后List<int[]>#contains
会尝试搜索Integer
。如上所述,它永远不会找到它。
解决这个问题的方法:
将int[]
更改为Integer[]
。
创建一个接收int
的方法并搜索数组中的元素。
(由于问题看起来像是一项家庭作业,因此代码不会显示在答案中。)
答案 1 :(得分:2)
您可以使用Arrays.binarySearch()
。它返回键的索引,如果它包含在数组中;否则,( - (插入点) - 1)。您必须先使用sort()
方法:
Arrays.sort(array);
if (Arrays.binarySearch(array, input.nextInt()>=0)