【发布时间】:2021-07-19 01:09:22
【问题描述】:
我正在上大学的第一门编程课程,我的问题如下:
我有一个 Player 对象的 ArrayList,具有以下属性:
name: String;
area: int;
numberofdices: int;
对于每个玩家,Area 初始化为 8,NumberOfDices 初始化为 24。
我想将这些 Players 传递给 2D 数组。因此,例如,如果有 3 个玩家,我希望数组看起来像这样:
[
[name: 1, area: 8, numberofdices: 3],
[name: 2, area: 8, numberofdices: 2],
[name: 3, area: 8, numberofdices: 8]
]
本质上,我希望所有玩家的区域都为 8,并且我想在区域之间随机划分 NumberOfDices。 (最少 1 个,最多 8 个)
尝试了以下方法,但没有成功:
public static void random_board(ArrayList<Players> listofplayers,Players[][] gameboard) {
do {
for(int row = 0;row < gameboard.length;row++) {
for(int column = 0;column < gameboard[row].length;column++) {
// System.out.println(gameboard[row][column]);
if(gameboard[row][column] == null) {
Iterator<Players> it = listofplayers.iterator();
while (it.hasNext()) {
Players i = it.next();
Random r = new Random();
int number = r.nextInt(8) + 1;
if (i instanceof Players) {
if (((Players) i).numberofdices - number >= 1 && ((Players i).area > 1) {
gameboard[row][column] = new Players(((Players) i).name, 1, number);
((Players) i).setnumberofdices(((Players) i).getnumberofdices() - number);
((Players) i).setarea(i.getarea()-1);
if ( ((Players)i).getarea() == 1 ) {
gameboard[row][column] = new Players(((Players)i).name,((Players)i).area,((Players)i).numberofdices);
it.remove();
}
}
} else if (i instanceof Enemies) {
if (((Enemies) i).numberofdices - number >= 1 && ((Enemies) i).area > 1) {
gameboard[row][column] = new Enemies(((Enemies) i).name, 1, number,((Enemies)i).getAttacking_mood());
((Enemies) i).setnumberofdices(((Enemies) i).getnumberofdices() - number);
((Enemies) i).setarea(i.getarea()-1);
if ( ((Enemies)i).getarea() == 1 ) {
gameboard[row][column] = new Enemies(((Enemies)i).name,((Enemies)i).area,((Enemies)i).numberofdices,((Enemies)i).getAttacking_mood());
it.remove();
}
}
}
}
}
}
}
} while (!listofplayers.isEmpty());
我有一个 Enemies 类,它继承自 Players 类并包含另一个成员变量:attacking_mood。
我认为它进入了一个无限循环。
【问题讨论】:
-
不清楚是什么问题。你能比“它不起作用”更具体吗?你认为为什么会陷入无限循环?这应该很容易测试。
-
需要更多关于实际问题的代码和信息。程序的错误或输出是什么(如果没有,打印出变量)?具体有什么不行的?那些
Enemies在那里做什么?为什么会有Players和Player类? -
与编写程序并行,学习如何调试它们。例如。使用 IDE 的单步执行功能来遵循程序的控制流程。观察变量的内容——它们是否包含预期值?这样一来,您肯定会比任何人都更清楚地发现问题所在,因为没有人比您更清楚会发生什么。
-
感谢所有回复!我想是无限循环,因为在我运行程序后什么也没发生,只是加载了一个小时,所以我停止了它。
标签: java arrays object arraylist