gpt4 book ai didi

java - 如何按照添加顺序打印 ArrayList

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

在我的程序中调用 record() 方法。所以如果用户输入1, 2, 3, 4, 5, 6, 7。按照这个顺序,它打印出 7, 6, 5, 4, 3, 2, 1。我尝试过增强的 for 循环,递增的 for 循环等。请帮忙,提前致谢。

ArrayList<Integer> playerMoves = new ArrayList<Integer>(20); 

public void record(int value) {

playerMoves.add(0, value);

if(playerMoves.size() > 20) {
playerMoves.remove(playerMoves.size() - 1);
}
}


public void displayPlayerMoves() {

int fullstopCount = 20;
System.out.print(playerMoves.size() + " moves: ");

for(int i = playerMoves.size(); i > 0; i--) {
fullstopCount--;
if(playerMoves.size() == fullstopCount) {
System.out.print(playerMoves.get(i) + ".");
} else {
System.out.print(playerMoves.get(i) + ", ");
}
}


}

最佳答案

您将每个元素添加到列表的第一个位置:

playerMoves.add(0, value);

这意味着您正在创建一个列表,其顺序与插入顺序相反。

如果将其更改为:

playerMoves.add(value);

它将把每个元素添加到列表的末尾,这也会导致列表按照插入的顺序打印。

如果你做出了改变,你也应该改变

if(playerMoves.size() > 20) {
playerMoves.remove(playerMoves.size() - 1);
}

if(playerMoves.size() > 20) {
playerMoves.remove(0);
}

因为您想删除最旧的移动。

编辑:

我刚刚注意到,当您打印元素时,您以相反的顺序迭代列表,但是您的循环有错误的索引。应该是:

int i = playerMoves.size() - 1; i >= 0; i--)

如果您使用该循环,则不必更改 record 方法。

如果您确实更改了列表中元素的顺序,则可以简化显示方法:

public void displayPlayerMoves() 
{
System.out.print(playerMoves.size() + " moves: ");
bool first = true;
for(int value : playerMoves) {
if (!first)
System.out.print(", ");
first = false;
System.out.print(value);
}
System.out.print('.');
}

关于java - 如何按照添加顺序打印 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30233850/

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