-3

我使用数组和方法编写了一个代码,允许用户输入任意数量的数字并显示从最小数字到最大数字排序的数字但是程序可以工作但它没有显示数字这里是我写的代码

import java.util.Scanner;

public class Numbers {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("How many numbers you want to enter? ");
        int size = s.nextInt();
        int i;
        double[] numbers1 = new double[size];
        System.out.println("Enter " + numbers1.length + " numbers: ");
        getNumbers(numbers1);

        double[] numbers2 = new double[numbers1.length];
        for (i = 0; i < numbers1.length; i++) {
            numbers2[i] = numbers1[i];
        }
        displayNumbers(numbers1);
        System.out.println("The numbers after sorting are: ");
        sortNumbers(numbers2);
        displayNumbers(numbers2);
    }

    public static void getNumbers(double[] numbers) {
        Scanner s = new Scanner(System.in);
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = s.nextDouble();
        }
    }

    public static void sortNumbers(double[] numbers) {
        double temp;
        double pass;
        for (pass = 0; pass < numbers.length; pass++) {
            for (int i = 0; i < numbers.length - 1; i++) {
                if (numbers[i] > numbers[i + 1]) {
                    temp = numbers[i];
                    numbers[i] = numbers[i + 1];
                    numbers[i + 1] = temp;
                }
            }
        }
    }

    public static void displayNumbers(double[] numbers) {
        Scanner s = new Scanner(System.in);
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = s.nextDouble();
            System.out.print(numbers + " ");
        }

        System.out.println();
    }

}
4

2 回答 2

1

你的displayNumbers()方法不对。在你写的循环中:

numbers[i] = s.nextDouble();
System.out.print(numbers + " " );

您正在尝试再次读取 4 个双精度数(每次调用该方法)并且您正在打印整个数组(这不会达到您的预期)。你可能想要的是这样的:

System.out.print(numbers[i] + " " );
于 2019-05-01T07:26:55.020 回答
0

您的代码效率低下且不清楚。

您不需要Scanner每次都创建一个新的,也不需要println使用Arrays.toString(double[]).

您还应该制作更清晰的指令和变量名称。

这是代码应该如何的示例

    public static void main(String[] args)
    {
        //create a new Scanner with a name that defines it
        Scanner scanner = new Scanner(System.in);
        //print your instructions
        System.out.println("How many numbers would you like to sort?");
        //print "> " to let the user to know he should be entering values
        System.out.print("> ");
        //read the number the user has entered which we will define as how many numbers he would enter next
        int totalNumbers = scanner.nextInt();
        //create a new array the size of the total numbers
        double[] unsortedNumbers = new double[totalNumbers];
        //tell the user to enter his unsorted numbers
        System.out.println("Enter your unsorted numbers: ");
        //loop totalNumbers times until the whole unsortedNumbers is full
        for(int index = 0; index < totalNumbers; index++)
        {
            System.out.print("> ");
            unsortedNumbers[index] = scanner.nextDouble();
        }
        //Print the numbers he entered
        System.out.println("You entered: ");
        //Arrays.toString prints the array in format [number, number, ...]
        System.out.println(Arrays.toString(unsortedNumbers));
        //sort the arrays with Arrays.sort which sorts in ascending numerical order
        Arrays.sort(unsortedNumbers);
        //Print the final result - sorted numbers
        System.out.println("Sorted: " + Arrays.toString(unsortedNumbers));
    }
于 2019-05-01T07:39:22.397 回答