Java 如何获得未知数量的数字并显示第三大数字?

Java 如何获得未知数量的数字并显示第三大数字?,java,Java,正如标题所说,我不知道如何做,不能做一个数组,因为我不知道有多少个数字?当用户输入“0”时,代码需要显示第三高的数字。 编辑:不能列出动态的列表或数组为此,应使用ArrayList。您可以使用以下命令初始化列表: List<Integer> l = new ArrayList<Integer>(); 数组列表会自动为您分配更多空间。希望这会有所帮助。如果您维护前3位数字的数组并继续对其排序 Scanner scanner = new Scanner(System.in)

正如标题所说,我不知道如何做,不能做一个数组,因为我不知道有多少个数字?当用户输入“0”时,代码需要显示第三高的数字。
编辑:不能列出动态的列表或数组

为此,应使用
ArrayList
。您可以使用以下命令初始化列表:

List<Integer> l = new ArrayList<Integer>();

数组列表会自动为您分配更多空间。希望这会有所帮助。

如果您维护前3位数字的数组并继续对其排序

Scanner scanner = new Scanner(System.in);
int[] largest = new int[3];

while (scanner.hasNext()) {
    int number = scanner.nextInt();
    scanner.nextLine();
    if (number == 0) {
        break;
    }
    if (number > largest[0]) {
        largest[0] = number;
    }
    Arrays.sort(largest);
    System.out.println(Arrays.toString(largest));
    System.out.println(largest[0]);
}
scanner.close();
System.out.println("Third largest " + largest[0]);

您只需要一个有三个插槽的阵列。其中一个插槽的容量是迄今为止最大的。下一个插槽容纳了迄今为止第二大的数字。第三个位置是目前为止第三大位置


仔细阅读长长的数字列表,适当地更新小数组。无需存储超过三个数字,再加上您正在检查的当前数字。

使用集合。如果你不在乎重复项,那就列一个列表,如果在乎重复项,那就列一个集合。把它放到
树集合中
@borisespider是对的。使用反向比较器创建一个树集,然后在第三个元素上迭代。@vefthym没有理由反向比较,只是从另一端读取…@Boristeider同意,但我认为使用增强循环从第一个到最后一个进行迭代更容易编写。不过没什么好争论的……我不能用这个列表,有什么办法吗that@DavidBarishav请看我的新解决方案。此处仅显示一个工作示例。原始问题没有提供显示数字来源的代码…数字来自扫描仪,基本上来自用户他们不会在一个数组中,我不会为你做全部作业,但我会用扫描仪等更新我的答案…不能使用列表,有没有办法解决这个问题?如何获得数字?你应该知道你得到了多少数字。它将继续得到数字,当它完成时,它将输入0
Scanner scanner = new Scanner(System.in);
int[] largest = new int[3];

while (scanner.hasNext()) {
    int number = scanner.nextInt();
    scanner.nextLine();
    if (number == 0) {
        break;
    }
    if (number > largest[0]) {
        largest[0] = number;
    }
    Arrays.sort(largest);
    System.out.println(Arrays.toString(largest));
    System.out.println(largest[0]);
}
scanner.close();
System.out.println("Third largest " + largest[0]);