繁体   English   中英

如何输入n个数字并以升序打印而不使用数组

[英]how to input n numbers and print it in ascending order without using array

我试图创建一个程序,该程序在一个循环中接收n个输入,并且能够以升序显示输出。 程序的主要主题是它不应使用数组。

我通过创建一个接受输入并首先显示最小数字,然后显示第二最小和第三最小等等的程序来进行尝试。 但是我是编程的新手,所以我的程序只能像最小的第一个那样工作,并且不起作用。

我在类似的问题之一中也看到了堆数据结构,但无法弄清没有数组如何工作。

请帮助我如何使用堆数据结构,或者给我一个很好的建议。

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);
}

您可以使用流:

    StreamSupport.stream(
            Spliterators.spliteratorUnknownSize(new Scanner(System.in), Spliterator.ORDERED),
            false)
            .limit(10)
            .sorted()
            .forEach(System.out::println);

使用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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM