如何检查数字是否以整数存在

时间:2017-10-02 08:15:02

标签: java

我有一个数字阵列。

E.g。

76543,65334,776958,8978,2436,232789

如何检查整数是否包含789,无论顺序如何?

E.g。 776958, 8978232789包含789,而76543仅包含7

3 个答案:

答案 0 :(得分:2)

int[] ints = new int[] { 76543, 65334, 776958, 8978, 2436, 232789 };
for (int i : ints) {
    boolean containsAllThree = false;
    if (String.valueOf(i).contains("7") && String.valueOf(i).contains("8") && String.valueOf(i).contains("9"))
        containsAllThree = true;
    System.out.println(containsAllThree);
}

因为您需要789789必须包含,您必须执行3次检查(我将其合并到{{} 1}}条件)

答案 1 :(得分:0)

您必须将此数字转换为String,并且它们与此subString存在比较。我想如果你这样做就可以解决。

boolean present = false;
int[] arr = {12123,432552,4534534};
for(int num : arr){
  String aux = Integer.toString(num);
  if(aux.contains("789"))
    present = true;
}

答案 2 :(得分:0)

假设您使用JAVA8,您可以使用流。将其映射到String,然后检查该String是否包含数字:

int[] arr = new int[] {1,2,3897};
System.out.println(Arrays.stream(arr)
                  .mapToObj(i -> String.valueOf(i))
                  .anyMatch(s -> s.contains("7") && s.contains("8") && s.contains("9")));

根据您的具体需求,您还可以使用该流过滤掉包含您的号码(或不包含您的号码)的号码,使用流的.filter()方法。

int[] arr = new int[] {1,2,3897};
List list = Arrays.stream(arr)
            .filter(i -> String.valueOf(i).contains("7")  && String.valueOf(i).contains("8") && String.valueOf(i).contains("9"))
            .boxed()
            .collect(Collectors.toList());
System.out.println(list);