定义一个数组并传递每个点2的值?

时间:2013-07-12 03:45:16

标签: java

我想定义一个网格,在其中我为网格中的每个点指定(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};
  }
}

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

做我想做的最好的方法是什么?感谢。

3 个答案:

答案 0 :(得分: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);;
   }
}

答案 1 :(得分:1)

您基本上想在每个阵列单元格中存储固定数量的值吗? 然后你受限于2个主要案例:

  1. 使用对象
    Java没有用户定义的值类型,因此您不得不在堆上使用完整的对象(几乎没有希望JVM会非常聪明并优化它,但几乎可能是零),无论是数组,还是任何其他类。
  2. 如果两个值都小于64位,则可以使用按位算法将它们打包为内置基本类型(例如long)。 (你必须非常小心
  3. int为32位,因此您可以在1 int中打包2 long

答案 2 :(得分:0)

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

一样

你可以试试java map。