Java填充一个带有非重复记录的数组


Scanner sc=new Scanner(System.in);
int i=0;
int nr = sc.nextInt();
int[] arr=new int[5];
while (i<arr.length || arr[i] < 11 ){
    System.out.println("Enter "+i+" index of array: ");
    int j = 0;
    if (arr[i]==arr[j]) {
        arr[i]=sc.nextInt();
        i++;
    }
}
System.out.println(Arrays.toString(arr));

我只能将不重复两次的值插入数组中,值不得通过11,否则请再次询问用户。请帮助!

public static void main(String... args) {
    Integer[] arr = new Integer[5];
    Scanner sc = new Scanner(System.in);
    for (int j = 0; j < arr.length;) {
        System.out.println("Enter a number less than 11.");
        Integer i = sc.nextInt();
        if (i < 11 && !Arrays.stream(arr).anyMatch(a -> a == i)) {
            arr[j] = i;
            j++;
        }
    }
    System.out.println("type 1 for ascending and 2 for descending order");
    int choice = sc.nextInt();
    if (choice == 1)
        Arrays.sort(arr);
    else if (choice == 2)
        Arrays.sort(arr, Collections.reverseOrder());
    System.out.println(Arrays.toString(arr));
}

此代码确实有效,但是对现有元素的搜索很可能是5个元素的过度杀伤,但如果扩展为止,则很有用。另请注意,此代码在Java 7中不起作用。如果您需要澄清代码的作用,请询问。

编辑:更新的代码以提供排序选择

这是代码:您可以更改3个数组的大小并尝试使用代码。

如果您有任何疑问,欢迎您问。

public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[3];
        int counter = 0;
        while (true) {
            System.out.println("Enter a number less than 11.");
            int i = sc.nextInt();
            if (i < 11 && notFound(i, arr)) {
                arr[counter] = i;
                counter++;
            }
            if (counter == arr.length)
                break;
        }
        System.out.println(Arrays.toString(arr));
    }
    private static boolean notFound(int num, int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (num == arr[i])
                return false;
        }
        return true;
    }
}

最新更新