如何确保数组包含某些值?

时间:2018-11-22 03:29:10

标签: java arrays sudoku

我是编码新手,我想知道如何确保特定数组包含某些值?

这是我所拥有的,但对我不起作用。我曾尝试过在互联网上寻找解决方案,但我对许多人感到困惑。任何反馈都会有所帮助!

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;
}

2 个答案:

答案 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。