我之前使用 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] + " ");
}
}
}
但是,在该程序中,程序不是对输入的数字进行排序,而是简单地打印用户输入的第一个数字。我不确定是否需要移动放置扫描仪功能的位置,或者在循环内添加它以便按照我希望的方式对所有数字进行排序。如果是这样的话,我很遗憾在哪里改变计划。
答案 0 :(得分:0)
代码int[] numbers = new int[] {scan.nextInt()};
将始终创建大小为1的数组(而不是List)。
通常在这类作业中你会得到n + 1
个数字,例如5 3 6 2 4 1
就意味着“我要给你五个数字。哦,这里它们是:3 6 2 4和1! “
您可能想要int[] numbers = new int[scan.nextInt()];
之类的内容 - 然后从0
循环到numbers.length
以填充数组。
答案 1 :(得分:0)
那是因为LayoutManager
是一个单独的分配。扫描读取单个输入并分配给数字[0]。
您实际上需要修改int[] numbers = new int[] {scan.nextInt()};
的代码才能阅读scan
个数字并存储在n
大小的n
中。
numbers