1 回答
TA贡献1859条经验 获得超6个赞
对于您的问题,您只需将其设置回零,例如:
//up
if(move == 1) {
map[px][py + 1] = "0";
map[px][py + 1] = player;
printMap(map);
}
但是您的代码存在几个问题:
如果你想向上移动,那么你应该从行索引中减去一个,其他方向也是如此(请参见下面的代码)。
当你声明一个字符串数组时,它的内容将为空,你应该用零(字符串零)初始化它。
看看我如何打印二维数组,我使用的每一行而
print
不是println
.您还需要更新 px/ py 索引,如 @Nexevis 提到的
请参阅此代码示例:
import java.util.Scanner;
public class Example{
public static void main(String[] args) {
//starting player position
int px = 4;
int py = 2;
String player = "P";
String map[][] = new String[5][5];
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[0].length; j++) {
map[i][j]="0";
}
}
for(int i = 0; i < map.length; i++)
for (int j = 0; j < map.length; j++) {
map[px][py] = player;
//System.out.println(map[i][j]);
System.out.println("1-move up \n2-move right \n3-move left\n4-move- down");
int move;
Scanner scanner = new Scanner(System.in);
move = scanner.nextInt();
//up
if(move == 1) {
map[px][py] = "0";
map[--px][py] = player;
printMap(map);
}
//right
if(move == 2) {
map[px][py] = "0";
map[px][++py] = player;
printMap(map);
}
//left
if(move == 3) {
map[px][py] = "0";
map[px ][--py] = player;
printMap(map);
}
//down
if(move == 4) {
map[px][py] = "0";
map[++px][py] = player;
printMap(map);
}
}
}
public static void printMap(String[][] a) {
for ( int i = 0; i < a.length; i++)
{
for( int j = 0; j < a[1].length; j++)
System.out.print( a[i][j]+" ");
System.out.println();
}
}
}
请注意,您应该添加对数组索引的验证以防止 IndexOutOfBound 异常
添加回答
举报