gpt4 book ai didi

java - java中的ArrayList不删除-1

转载 作者:行者123 更新时间:2023-12-04 21:28:27 25 4
gpt4 key购买 nike

所以,我参加了比赛。

问题是我必须从输入数组中打印出第三小的正整数。忽略负整数和零。所以排序后的数组必须从 1 开始,而不是 0。

这就是输入的样子。

5

1 10 1 2 3 4 5 6 7 8 9 10

2 3 -10 9 8

3 2 0 5

4 5 -2 -1 0 1 2

5 1 -1

输入的第一行是数据集的数量。在这种情况下它是 5。其余的是整数数组。

每个数组的第一个和第二个整数是数组编号和元素数量。其余的是实际的数组。即 5 1 -1。 5 是数组编号 5,1 是只有 1 个元素,-1 是元素。

如果数组中的元素少于 3 个。打印“na”。这就是它应该看起来的样子(上面输入的结果)。如果数组中有 3 个以上的排序元素。然后打印出数组编号。用空格分隔,然后是数组中第三小的数字。

1 3呐呐呐没有

但是我明白了1 3呐呐4 2没有

当我打印出第 4 个排序数组时。我得到 [-1, 1, 2]。正在删除 0 但不删除 -1。我真的不明白。有没有什么办法解决这一问题?或者只是我需要更多技能。

public class one {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int dataset = in.nextInt();
in.nextLine();
for (int y = 0; y < dataset; y++) {
int index = in.nextInt();
int times = in.nextInt();
ArrayList<Integer> stt = new ArrayList<>(times);
int ct = 0;
while (true) {
int i = in.nextInt();
stt.add(i);
ct++;
if (ct == times) {break;}
}
Collections.sort(stt);
for (int d = 0; d < stt.size(); d++) {
if (stt.get(d) <= 0) {stt.remove(d);}
}
System.out.println(stt);
if (y + 1 == dataset) {
if (stt.size() < 3) {System.out.print("na");}
else {System.out.print((y + 1) + " " + stt.get(2));}
}
else {
if (stt.size() < 3) {System.out.println("na");}
else {System.out.println((y + 1) + " " + stt.get(2));}
}
}
}
}

最佳答案

我会在排序之前使用 list.removeIf() 方法,因为它可以节省您的时间和线路,而且您不用担心 ConcurrentModificationException:

public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 8, -3, 5, -6, -12, 5, -12, -95, -32, 0, 3, 9);
list = new ArrayList<>(list); //Make the list modifiable. Ignore this
list.removeIf(i -> i <= 0); //Remove negatives and 0s
Collections.sort(list);
System.out.println(list);
if (list.size() >= 3)
System.out.println(list.get(2));
else
System.out.println("na");
}

输出到:

[1, 3, 5, 5, 8, 9]
5

正如预期的那样,输入:[-1, -8, -3, -5, -6, -12, 5, -12, -95, -32, 0, -3, 9] 打印出来:

[5, 9]
na

关于java - java中的ArrayList不删除-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58900088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com