java 如何输入n个数字并按升序打印

c3frrgcw  于 2022-12-10  发布在  Java
关注(0)|答案(4)|浏览(197)

我试图创建一个程序,在一个循环中接受n个输入,并能够以升序显示输出。程序的主题是它不应该使用数组。
我试过创建一个程序,输入和显示最小的数字第一,然后第二次最小和第三次最小,等等。但我是新的编程,所以我的程序只能做像第一次最小,它不工作。
我也在一个类似的问题中看到了堆数据结构,但不知道它如何在没有数组的情况下工作。
请帮助我如何使用堆数据结构或给予我一个好的建议来做。

62o28rlo

62o28rlo1#

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

hof1towb2#

您可以使用流:

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

tcomlyy63#

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

sxpgvts34#

仅在if条件下尝试!

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int x;
        int y;
        int z;

        Scanner scanner = new Scanner(System.in);

        x = scanner.nextInt(); 
        y = scanner.nextInt(); 
        z = scanner.nextInt(); 

         
        int max = 0;
        int secondMax =0;
        int min = 0;

        if(x>y)  
        {
            if(x>z)
            {
               max = x;  
                if(y>z)
                {
                    secondMax = y;
                    min = z;
                }
                else
                {
                    secondMax = z;
                    min = y;
                }
            }
            else
            {
                max = z;
                if(x<y)
                {
                    secondMax = y;
                    min = x;
                }
                else
                {
                    secondMax = x;
                    min = y;
                }
            }
        }
        else
        {
            if(y>z)          {
            {
                max = y;
                if(x>z)
                {
                    secondMax =x;
                    min = z;
                }
                else
                {
                    secondMax = z;
                    min = x;
                }
            }
            else
            {
                max = z; 
                if(x<y)
                {
                    secondMax = y;
                    min = x;
                }
                else
                {
                    secondMax = x;
                    min = y;
                }
            }
        }

        System.out.println(min + ", " + secondMax + ", " +max);

    }
}

相关问题