首页 > 解决方案 > 成员资格测试以查找数组中是否存在数字

问题描述

给定一个 int 数组,有没有办法进行成员资格测试,以查看 int 数组中是否存在特定数字。问题是要找到用户给出的 1-10 之间的缺失数字。例如 [1,2,3,4,5] 如果 1 在数组中,它应该为真。我似乎无法在这里发布我的代码。

import java.util.Scanner; 
import java.util.Arrays; 

public class Q1 { 
  public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    System.out.println("Enter numbers of element: "); 
    int size = scan.nextInt(); 
    int arry[]=new int[size]; 
    for(int i =0;i<size;i++){ 
      System.out.println("Enter any number betweent 1-10:"); 
      int element = scan.nextInt(); 
      arry[i] = element; 
    } 
    System.out.println(Arrays.toString(arry)); 
    System.out.println(Arrays.asList(arry).contains(1)); 
  } 
} 

标签: javaarraysintegermembership

解决方案


这段代码的问题是它Arrays.asList不会创建List<int[]>隐含的List<Integer>,因此方法.contains(1)总是false

应该实施简单的方法来检查成员资格:

static boolean isInArray(int n, int ... arr) {
    for (int x : arr) {
        if (x == n) return true;
    }
    return false;
}

使用流 API:

static boolean isInArray(int n, int ... arr) {
    return Arrays.stream(arr).anyMatch(x -> x == n);
}

或者输入数组应该声明为Integer[] arry,然后Arrays.asList提供适当List<Integer>的 ,并且方法contains(1)适用于这样的列表。


推荐阅读