用户输入对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] + " ");
}
}
}
但是,在这个程序中,该程序不是对输入的数字进行排序,而是简单地打印用户输入的第一个数字。我不确定我是否需要移动扫描器函数的位置,或者在循环中添加它,以便它按照我的要求对所有数字进行排序。如果是这样的话,我不知道在哪里更改程序
# 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()};
是一个单一的赋值。扫描读取单个输入并分配给数字[0]实际上,您需要修改
scan
的代码,以读取n
个数字,并存储在n
大小的numbers
中差不多吧