从 Scanner 将值输入到数组中

input values into array from Scanner

用户需要输入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);
        }
    }
}

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

重复直到到达数组末尾,这样您的数组就会保持排序。

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;
}

如果您在将它们插入数组时需要对其进行排序,您可以将现有数字扔掉并插入到您想要的位置。

类似的东西 (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));
}

无论如何,更好的解决方案(恕我直言)是在用户指定的位置插入数字,后记使用 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));
}