gpt4 book ai didi

java - 将二进制文件读取到双端队列时出现问题

转载 作者:行者123 更新时间:2023-12-01 16:01:34 24 4
gpt4 key购买 nike

我正在按照我的老师的要求使用 ArrayList 编写一个双端队列实现。到目前为止,类的主体看起来像这样

try {
while (!endOfFile) {
character = inputFile.readChar();
while (!character.equals('\u0003')) {
if (character.equals('\u0008'))
deck.removeBack();
else
deck.addToBack(character);
}
}

while (!deck.isEmpty()) {
character = deck.removeFront();
if (character.equals('\u0003'))
System.out.print("\n");
else
System.out.print(character);
}
} catch (EOFException e) {
endOfFile = true;
}

双端队列初始化为

 Deque<Character> = new deck Deque<Character>()

我已经使用单独的测试类测试了我的 Deque,并且我非常确定它工作正常。但每次我尝试运行这个读取类时,它都会在 Deck.addToBack(character) 行导致 java.lang.OutOfMemoryError 。是什么导致了这个问题以及如何避免它?

编辑:我对双端队列的实现。该界面是我的导师提供的。

import java.util.*;
public class Deque<T> extends ArrayList<T> implements DequeInterface<T> {

public Deque()
{
super();
}

public void addToFront(T newEntry) {
add(0, newEntry);
}

public void addToBack(T newEntry) {
add(newEntry);
}

public T removeFront() {
T entry = null;
entry = get(0);
remove(0);
return entry;
}

public T removeBack() {
T entry = null;
entry = get(size() - 1);
remove(size() - 1);
return entry;
}

public T getFront() {
T entry = get(0);
return entry;
}

public T getBack() {
T entry = get(size() - 1);
return entry;
}

public boolean isEmpty() {
if (size() == 0)
return true;
else
return false;
}

public void clear() {
clear();
}

}

最佳答案

    while (!endOfFile) {
character = inputFile.readChar();
while (!character.equals('\u0003')) {
if (character.equals('\u0008'))
deck.removeBack();
else
deck.addToBack(character);
}
}

检查外循环退出条件。

readChar 是否返回 -1 来表示数据结束?这可能会导致无限循环,导致内存耗尽。

关于java - 将二进制文件读取到双端队列时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3742319/

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