有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用户输入对Bubblesort程序的java修改

我以前使用BubbleSort方法创建了一个程序,该程序可以对已经存在的列表中的数字进行排序,但是,为了允许用户输入要排序的数字列表,我在尝试操作该程序时遇到了困难。到目前为止,我已经:

import java.util.Scanner;

public class MedianValue {

public static void main(String[] args) {

    //use scanner to input list of numbers to sort

    Scanner scan = new Scanner(System.in);

    int[] numbers = new int[] {scan.nextInt()};


    //nested for loop
    //outer loop just iterating
        //inner loop going through and flipping
            //checking if out of order (if statement)


    int counter = 0;

    //outer loop: keep doing this until it's sorted

    for(int i = 0; i < numbers.length - 1; i = i + 1)

    //put in a inner loop number.length times minus one because we don't want to swap the last element

        for(counter = 0; counter < numbers.length - 1; counter = counter + 1)
        {



            if (numbers [counter] > numbers [counter + 1])
            {


                int temporary = numbers [counter];
                numbers [counter] = numbers [counter + 1];
                numbers [counter + 1] = temporary;
            }
        }


        for(int i =0; i < numbers.length; i = i + 1)
        {
            System.out.print(numbers[i] + " ");
        }
    }

}

但是,在这个程序中,该程序不是对输入的数字进行排序,而是简单地打印用户输入的第一个数字。我不确定我是否需要移动扫描器函数的位置,或者在循环中添加它,以便它按照我的要求对所有数字进行排序。如果是这样的话,我不知道在哪里更改程序


共 (2) 个答案

  1. # 1 楼答案

    代码int[] numbers = new int[] {scan.nextInt()};将始终创建大小为1的数组(而不是列表)

    通常在这类作业中,你会得到n + 1个数字,例如5 3 6 2 4 1意味着“我会给你五个数字。哦,它们是:3、6、2、4和1!”

    您可能需要类似int[] numbers = new int[scan.nextInt()];的东西,然后从0循环到numbers.length来填充数组

  2. # 2 楼答案

    那是因为int[] numbers = new int[] {scan.nextInt()};是一个单一的赋值。扫描读取单个输入并分配给数字[0]

    实际上,您需要修改scan的代码,以读取n个数字,并存储在n大小的numbers

    差不多吧

    int[] numbers = new int[scan.nextInt()];
    for( int i = 0; i < numbers.length; i++)
       numbers[i] = scan.nextInt();