Java填充具有非重复记录的数组

时间:2017-08-31 10:45:41

标签: java arrays sorting

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的值,或者再次询问用户。请帮助,Stuck!

2 个答案:

答案 0 :(得分:1)

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中不起作用。如果您需要澄清代码的作用,请询问。

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

答案 1 :(得分:-1)

以下是代码:您可以从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;
    }
}