0

我想定义一个网格,在其中为网格中的每个点指定一个 (x,y) 坐标。所以我想做这样的事情:

int [][] pt;    
for (x=0; x<numX; x=x+1) {
  for (y=0; y<numY; y=y+1) {
    pt[x][y] = {xval, yval};
  }
}

原因是因为我将有序网格的值映射到无序网格。上面的代码当然会导致异常(意外的标记“{”)。

做我想做的事情的最佳方法是什么?谢谢。

4

3 回答 3

3

两件事情:

  • 你还没有初始化你的数组(也许你只是没有输入代码)
  • 您正试图将两个值放入只能保存一个值的位置。

像这样初始化你的数组(如果你没有)

int[][] pt = new int[numX][numY];

要将这两个值存储在数组中,您需要使用一个对象。java Point类将是您可以使用的示例

Point[][] pt = new Point[numX][numY];
for (x=0; x<numX; x=x+1) {
   for (y=0; y<numY; y=y+1) {
       pt[x][y] = new Point(xval, yval);;
   }
}
于 2013-07-12T04:58:36.557 回答
1

您基本上想在每个数组单元格中存储固定数量的值?那么你受限于两种主要情况:

  1. 使用对象
    Java 没有用户定义的值类型,所以你不得不在堆上使用成熟的对象(不太希望 JVM 会非常聪明并对其进行优化,但机会几乎为零),无论是数组或任何其他类。
  2. long如果两个值都小于 64 位,则可以使用按位算术将它们打包为内置的原始类型(例如)。(这里你必须非常小心

ints 是 32 位的,所以你可以在 1 中打包 2 个ints long

于 2013-07-12T03:57:29.520 回答
0

pt[x][y] = {xval, yval}是非法的,pt[][]是一个二维数组。它只能存储一个值。像这样pt[x][y] = value

你可以试试java map。

于 2013-07-12T03:59:00.153 回答