文件IO的LinkedList通过输出显示相同

时间:2019-01-20 14:47:20

标签: java file-io while-loop linked-list

LinkedList仅显示相同的输出。我正在尝试使用最后一个while循环,但是它不起作用。这是“鸭鸭鹅”的问题。我不应该使用索引。

19个名字

http://collabedit.com/q248e

public class DuckDuckGoose {

public static void main(String[] args) {

    LinkedList<String> linkedlist = new LinkedList<String>();
    // add try catch to add list
    try {
        FileReader fr = new FileReader(...players.txt");
        Scanner inFile = new Scanner(fr);

        while (inFile.hasNextLine()) {
            linkedlist.add(inFile.nextLine());
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    Iterator<String> iterator = linkedlist.iterator();

    // checks until the last list
    while (!iterator.hasNext()) {
        if (iterator.next().equals(getRandomBoolean())) {
            iterator.remove();
        }
    }
    System.out.println(linkedlist);
}

public static boolean getRandomBoolean() {
    return Math.random() < 10 * 0.5;
}
}

1 个答案:

答案 0 :(得分:0)

if (iterator.next().equals(getRandomBoolean())) {

这永远都是不正确的,因为迭代器包含String,而不是Boolean,因此您永远不会执行iterator.remove();

相反:

iterator.next(); // gets but ignores the next String.
if (getRandomBoolean()) {

此外,您的循环永远不会执行:

while (!iterator.hasNext()) {

因为迭代器最初具有下一个元素。

删除!


另外,这个:

Math.random() < 10 * 0.5

总是如此,因为Math.random()严格小于1,而10 * 0.5为5。

丢弃10 *,或在<的RHS上选择一个介于0和1之间的值。