我有一个数字阵列。
E.g。
76543,65334,776958,8978,2436,232789
如何检查整数是否包含7
,8
和9
,无论顺序如何?
E.g。 776958, 8978
和232789
包含7
,8
和9
,而76543
仅包含7
答案 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);
}
因为您需要789
但7
,8
和9
必须包含,您必须执行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);