我是编码新手,我想知道如何确保特定数组包含某些值?
这是我所拥有的,但对我不起作用。我曾尝试过在互联网上寻找解决方案,但我对许多人感到困惑。任何反馈都会有所帮助!
public static boolean allnumbers(int[] arr) {// makes sure only numbers 1-9 are used
boolean[] found = new boolean[9]; // creates a boolean array
for (int row = 0; row > 1 && row > 9; row++) {
int index = arr[row] - 1;
if(!found[index]) {
found[index] = true;
} else{
return false; //returns false if there are numbers that are not between 1-9
}
}
return true;
}
答案 0 :(得分:0)
/**
* Checks if this array consists of numbers 1 to 9, with all unique numbers,
* and no number missing.
*
* @param arr input array
* @return true if this array has numbers 1 to 9, each occurring exactly once
*/
public static boolean allnumbers(int[] arr) {
if (arr.length != 9) return false;
return IntStream.rangeClosed(1, 9)
.noneMatch(value -> Arrays.stream(arr).noneMatch(a -> a == value));
}
另一种方式...
public static boolean allnumbers(int[] arr) {
return Arrays.stream(arr).boxed().collect(Collectors.toSet())
.equals(IntStream.rangeClosed(1, 9).boxed().collect(Collectors.toSet()));
}
或者,如果您只想检查数字没有超出1-9的事实,则可以使用以下方法:-
public static boolean allnumbers(int[] arr) {
return Arrays.stream(arr)
.noneMatch(i -> i < 1 || i > 9);
}
答案 1 :(得分:-1)
这是解决您问题的方法:
public static boolean allnumbers(int[] arr) {// makes sure only numbers 1-9 are used
for(int row=0; row < 9; row++){
if (arr[row] < 1 || arr[row] > 9)
return false;
}
return true;
}
当且仅当且仅当arr中的前9个元素在1和9之间(包括1和9)之间时,此函数才返回true。