【问题标题】:Modification of Bubblesort program with user input使用用户输入修改冒泡排序程序
【发布时间】:2018-03-29 16:37:45
【问题描述】:

我之前使用 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] + " ");
        }
    }

}

但是,在这个程序中,程序不是对输入的数字进行排序,而是简单地打印用户输入的第一个数字。我不确定是否需要移动我的扫描仪功能的放置位置,或者在循环中添加它以便它按照我想要的方式对所有数字进行排序。如果是这种情况,我不知道在哪里更改程序。

【问题讨论】:

    标签: java arrays sorting


    【解决方案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】:

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

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

      类似的东西。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-30
        • 1970-01-01
        • 2013-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-20
        相关资源
        最近更新 更多