【问题标题】:input values into array from Scanner从 Scanner 将值输入到数组中
【发布时间】:2021-06-30 16:59:46
【问题描述】:

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

【问题讨论】:

  • “从小到大介绍”是指排序吗?
  • 您在存储 arr[i] 时遇到了哪些具体问题?

标签: java arrays for-loop java.util.scanner


【解决方案1】:

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

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

【讨论】:

  • 感谢您的帮助
【解决方案2】:

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

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

【讨论】:

  • 与仅使用 Arrays.sort 相比,这听起来非常低效
  • 你学到的第一个排序方法是什么?
  • 不确定这是否重要,但我个人在开始编程时被告知要使用内置排序功能
【解决方案3】:
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;
}

【讨论】:

  • 感谢您的帮助
猜你喜欢
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 2011-11-29
相关资源
最近更新 更多