查找给定的Integer是否在Array中或不使用Arraylist contains()

时间:2014-04-30 15:22:29

标签: java arrays if-statement

检查给定输入是否在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");
}

2 个答案:

答案 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)