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!
答案 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;
}
}