将值从扫描仪输入到数组中



用户需要输入10个数字
并将它们放入一个数组中
并从最小到最大介绍它们。

这是我的代码

import java.util.Scanner;
public class q1 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int arr[] = new int[10];
System.out.println("please enter 10 rundom numbers: ");
for (int i = 0; i < arr.length; i++) {
int number = input.nextInt();
System.out.println(number);
}
}
}

如果在将数字插入数组时需要对其进行排序,可以遍历现有数字并将其插入到所需位置。

类似的东西(InsertionSort(:

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int arr[] = new int[10];
System.out.println("please enter 10 random numbers: ");
//store 10 numbers into the array
for (int i = 0; i < arr.length; i++) {
int number = input.nextInt();
//switch all values in array which are > number one to the right
int j = i;
while (j > 0 && arr[j-1] > number) {
arr[j] = arr[j-1];
j--;
}
//insert number at correct position;
arr[j] = number;
}
System.out.println(Arrays.toString(arr));
}

无论如何,更好的解决方案(imho(是将数字插入用户给出的位置,并且后缀使用Arrays.sort,如下所示:

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int arr[] = new int[10];
System.out.println("please enter 10 random numbers: ");
//store 10 numbers into the array
for (int i = 0; i < arr.length; i++) {
arr[i] = input.nextInt();
}
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}

每次输入新数字时,都会在数组中遍历,如果新数字大于下一个数字,则会将它们相互切换。

重复此操作,直到到达数组的末尾,这样可以保持数组的排序。

public static void main(String... args) {
Scanner scan = new Scanner(System.in);
int[] arr = readRandomNumbers(scan, 10);
Arrays.sort(arr);
System.out.println("Sorted number: " + Arrays.toString(arr));
}
private static int[] readRandomNumbers(Scanner scan, int total) {
int[] arr = new int[total];
System.out.format("please enter %d random numbers:n", total);
for (int i = 0; i < arr.length; i++) {
System.out.format("%d: ", i + 1);
arr[i] = scan.nextInt();
}
return arr;
}

最新更新