我知道我在这段代码中的某个地方出错了,但我搞不懂。player1.getId();返回值1,这样您就知道了。我试图打印值为1的数组的索引。在代码的末尾,我预计currentX为0,currentY为0,但两者都是9。任何帮助都是超级的。
int[][] grid = {
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
{3, 3, 3, 3, 3, 3, 3, 3, 3, 3}
};
int currentX = 0;
int currentY = 0;
grid[0][0] = player1.getId();
grid[0][9] = 2;
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length; j++) {
if (grid[i][j] == player1.getId());
{
currentX = i;
currentY = j;
}
System.out.print(grid[i][j]);
}
}
System.out.println();
System.out.println("Player1 is currently in row " + currentX + " and column " + currentY);
发布于 2015-09-29 07:43:19
移除if (grid[i][j] == player1.getId());
末尾的分号(if (grid[i][j] == player1.getId());
)
if
考虑了java的语句的工作原理。
如果if
语句的表达式是true
,则java的true
语句执行它的块代码。分号以java语句结尾。如果在If语句后面放空分号,它就算作空语句。因此,if
语句在执行末尾带有分号的if
语句时什么也不做。Java编译器类似地编译代码,如下所示。
if (grid[i][j] == player1.getId()){
//nothing here
}
{
currentX = i;
currentY = j;
}
查看当其他类型的语句末尾有分号时会发生什么。
while
循环
同时(表达式);{//某些东西在这里}初始化true
循环时,条件可以是false
或while
。如果条件是true
,则会形成一个无限循环。行后什么也不会执行。如果表达式是false
,则只执行while
循环的预期内容一次。
switch (integer);
和 catch (Exception e);
它无法编译和获取异常{ expected
。
发布于 2015-09-29 07:54:50
这里的条件是true
(如果是player1.getId() == 1
):
if(grid[i][j] == player1.getId());
但是代码包含一个逻辑错误:这里的一组操作符-空操作符;
,它将被执行.
currentX
和currentY
总是等于数组的长度。
currentX = grid.length;
currentY = grid[0].length;
https://stackoverflow.com/questions/32848262
复制相似问题