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 異常
添加回答
舉報