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 中不起作用。如果您需要了解该代码的用途,请询问。
编辑: 更新代码以提供排序选择
关于Java 用不重复的记录填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45979568/