2 回答

TA貢獻1744條經驗 獲得超4個贊
將當前的 X 和 Y 坐標作為參數。從值中減去這些并取絕對值。這給出了你想要的行為。它實際上總是與您的第一個輸出相同的距離表,但您給它一個偏移起始位置。
例如:
Current position (x1,y1) = 4,4.
Wanted position (x2,Y2) = 3,2
Distance = absolute(x2-x1) + absolute(y2-y1) = abs(3-4) + abs(2-4) = 1 + 2 = 3
我修改了您的代碼以提供正確的偏移量表:
public static void path(int currentX, int currentY) {
int[][] ratings = new int[5][5];
int value = 0;
for (int i = 0; i<ratings.length; i++) {
value = Math.abs(i-currentX);
for (int j = 0; j<ratings[i].length; j++) {
ratings[i][j] = value + Math.abs(j-currentY);
System.out.print("-"+ratings[i][j]);
}
System.out.println();
}
}

TA貢獻1880條經驗 獲得超4個贊
另一種可能更清楚的方法是創建一個自定義距離方法,如下所示:
static int dist(int x1, int y1, int x2, int y2) {
return Math.abs(x1 - x2) + Math.abs(y1 - y2);
}
然后使用它你的循環:
public static void path(int currX, int currY) {
int[][] ratings = new int[5][5];
for (int i = 0; i < ratings.length; i++) {
for (int j = 0; j < ratings[i].length; j++) {
ratings[j][i] = dist(j, i, currX, currY);
System.out.print("-"+ratings[j][i]);
}
System.out.println();
}
}
添加回答
舉報