我正在编写一个典型的二维随机游走。但是,光标只能在基本方向上移动。我编写此方法是为了测试代码,但它不排除对角线移动(当 x 和 y 值相等时)。这就是我被困住的地方。我可以选择 1 到 4 之间的随机整数并使用嵌套 if,但似乎应该有一种使用 boolean 类型的更简单方法,因为它是一个二元决策。我走在正确的道路上吗?
for (int i = 1; i <= 10; i++) {
//assume x & y are already initialized
Random xmove = new Random();
Random ymove = new Random();
// select new x-coord
if (xmove.nextBoolean()) {
x += 1;
} else {
x += -1;
}
// select new y-cord
if (ymove.nextBoolean()) {
y += 1;
} else {
y += -1;
}
System.out.printf("(%d, %d)", x, y);
System.out.println();
}
最佳答案
正如你所说,有 4 种可能的移动(x+1、x-1、y+1、y-1),因此决定不是二元的。但是,您也不需要嵌套的 if:只需选择对哪个结果执行哪个操作即可。
if (move == 0) {
x += 1;
} else if (move == 1) {
x += -1;
} else if (move == 2) {
y += 1;
} else {
y += -1;
}
关于Java 2-D 随机游走仅限于四个方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35539266/