gpt4 book ai didi

java - 奇怪的输出比我使用 LinkedList 的预期输出

转载 作者:行者123 更新时间:2023-11-30 06:22:09 25 4
gpt4 key购买 nike

当程序运行时,它输出 10 个随机数,每个数字存储到 LinkedList 列表中,然后显示该列表,只显示 4-5 个数字,而不是原始数组中的 10 个。这是简单的代码:

import java.util.LinkedList;
import java.util.Random;

public class randomSum {
private static Random rand = new Random();
private static LinkedList<Integer> arr = new LinkedList<Integer>();

public static void main(String[] args) {
int num = 0;

System.out.println("Original List");
for(int i=0; i < 10; i++) {
num = rand.nextInt(1000);
arr.add(num);
System.out.println(num);
}

System.out.println("\nLinkedList List");
for(int j=0; j < arr.size(); j++)
System.out.println(arr.remove(j));
}
}

输出是这样的,这与我预期的不完全一样。它们应该是相同的。为什么会这样?

Original List
693
239
33
999
862
965
994
884
127
977

LinkedList List
693
33
862
994
127

最佳答案

因为在每次迭代中,您都会删除正在打印的元素。这将打破指数。例如,当您删除 index 0 处的元素时,index 1 处的元素现在移动到 index 0,但循环索引移动到 index 1 现在。所以元素只是转移到 index 0,从未被处理过。这将发生在每个备用元素上,因此您会得到该输出。

您需要使用get(j) 而不是remove(j):

for(int j=0; j < arr.size(); j++)
System.out.println(arr.get(j));

或使用 enhanced for loop :

for (int val: arr) {
System.out.println(val);
}

关于java - 奇怪的输出比我使用 LinkedList 的预期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19700896/

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