【问题标题】:membership test to find if a number is present in array [duplicate]成员资格测试以查找数组中是否存在数字[重复]
【发布时间】:2021-12-19 13:58:17
【问题描述】:

给定一个 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)); 
  } 
} 

【问题讨论】:

  • 为什么不能发布代码?代码只是纯文本,就像您已经发布的纯文本一样。
  • 不,它没有回答我的问题,因为即使值在数组中,它也显示为 false
  • 我无法发布我的代码,因为即使语法正确,它也会显示一些红点错误
  • 阿旺,如果是,你的值不在数组中。

标签: java arrays integer membership


【解决方案1】:

此代码的问题在于 Arrays.asList 将创建 List&lt;int[]&gt; 而不是隐含的 List&lt;Integer&gt;,因此方法 .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&lt;Integer&gt;,方法contains(1)适用于这样的列表。

【讨论】:

    【解决方案2】:

    尝试流。我不认为 aslist().contains() 支持像 int 这样的原语。这虽然有效:

    import java.util.stream.IntStream;
    
    class Main {  
    public static void main(String args[]) { 
        int[] a = {1,2,3,4,5,7,8,9};
        int find_1 = 4;
        int find_2 = 6;
        boolean find_num1 = IntStream.of(a).anyMatch(x -> x == find_1);
        boolean find_num2 = IntStream.of(a).anyMatch(x -> x == find_2);
        System.out.println("First num in array? " + find_num1);
        System.out.println("Second num in array? " + find_num2);
        } 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2015-09-12
      • 1970-01-01
      • 2018-11-15
      • 2020-04-02
      • 1970-01-01
      相关资源
      最近更新 更多