我正在尝试创建一个程序,它在循环中接收n
个输入,并能够按升序显示输出。程序的主题是它不应该使用数组。
我通过创建一个接受输入的程序来尝试它,然后显示最小的数字,然后是第二个最小的和第三个最小的,依此类推。但我是编程的新手,所以我的程序只能做到最小,而且不起作用。
我还在一个类似的问题中看到了堆数据结构,但是如果没有数组,它就无法弄清楚它是如何工作的。
请帮助我如何使用堆数据结构或给我一个很好的建议。
答案 0 :(得分:1)
List<Integer> list = new LinkedList<Integer>();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("Enter a number, -1 to exit: ");
int num = scanner.nextInt();
if (num == -1) break;
list.add(num);
}
// sort the list (ascending)
Collections.sort(list);
// output the list
for (Integer val : list) {
System.out.println(val);
}
答案 1 :(得分:1)
您可以使用Streams:
StreamSupport.stream(
Spliterators.spliteratorUnknownSize(new Scanner(System.in), Spliterator.ORDERED),
false)
.limit(10)
.sorted()
.forEach(System.out::println);
答案 2 :(得分:0)
使用SortedSet进行默认排序,不重复。 (如果这里需要重复,请不要!)
SortedSet<Integer> sortedSet = new TreeSet<Integer>();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("Enter a number, -1 to exit: ");
int num = scanner.nextInt();
if (num == -1)
break;
sortedSet.add(num);
}
System.out.println(sortedSet);