Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 阵列中两点之间的距离_Java_Arrays_Distance - Fatal编程技术网

Java 阵列中两点之间的距离

Java 阵列中两点之间的距离,java,arrays,distance,Java,Arrays,Distance,我试图找出数组中两点之间的距离(或“步数”)。从阵列中的任何位置到任何其他点 例如: 如果有一个PacMan地图是一个5x5矩阵,PacMan站在字段行=0和列=0上,他需要采取8个步骤才能到达字段r=5,c=5。 但是如果Pacman站在4x5上,他需要走多少步才能到达3x3的场地?? 我拼命想弄明白 到目前为止,我得到的是: 1 public static void path() { 2 int[][] ratings = new int[5][5]; 3 int

我试图找出数组中两点之间的距离(或“步数”)。从阵列中的任何位置到任何其他点

例如: 如果有一个PacMan地图是一个5x5矩阵,PacMan站在字段行=0和列=0上,他需要采取8个步骤才能到达字段r=5,c=5。 但是如果Pacman站在4x5上,他需要走多少步才能到达3x3的场地?? 我拼命想弄明白

到目前为止,我得到的是:

1   public static void path() {
2       int[][] ratings = new int[5][5];
3       int value = 0;
4       for(int i = 0; i<ratings.length; i++) {
5           value = i;
6           for(int j = 0; j<ratings[i].length; j++) {
7               ratings[i][j] = value;
8               value++;
9               System.out.print("-"+ratings[i][j]);
10          }
11          System.out.println();
12      }
13  }
正如你们所看到的,我试图给每个数组位置一个特定的路径等级。起点是具有0的点。例如,如何获得此输出:

-3-2-3-4-5
-2-1-2-3-4
-1-0-1-2-3
-2-1-2-3-4
-3-2-3-4-5

我希望你们能帮我解决这个问题。:)

给出当前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();
  }
}
公共静态无效路径(int-currentX,int-currentY){
int[][]评级=新int[5][5];
int值=0;

对于(int i=0;i另一种方法,也许更清楚,是创建一个自定义距离方法,如下所示:

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();
  }
}
公共静态无效路径(int currX,int currY){
int[][]评级=新int[5][5];
对于(int i=0;i
非常感谢!太好了!:D
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();
  }
}