我有一个长方形,它的坐标是A,B,C,D,它们分别具有以下坐标:
A->(3,9)
B->(6,9)
C->(6,6)
D->(3,6)其中A是左上角坐标,D是左下角坐标。
我希望将矩形划分为25个网格,并为每个网格分配一个number.For示例

所以我试着
double width = 6-3=3;
double height = 9-6=3;
grid width=3/5=0.6
grid height=3/5=0.6现在,我想给网格分配一个id,它们的协调如下
1 -> (3,9),(3.6,9),(3.6,8.4),(3,8.4)诸若此类。
因此,我正在实现一个哈希映射来存储信息。
HashMap<Integer, Double[]> hmap = new HashMap<Integer, Double[]>();但我搞不懂怎么才能得到网格id和
任何帮助都是非常感谢的。
发布于 2017-03-17 07:35:56
您可以通过简单的双循环生成ids和(36)坐标:
public static void main(String[] args) {
Map<Integer, double[]> hmap = new HashMap<>();
int id = 0;
for (double height = 9.0 ; height >= 6.0; height -=0.6) {
for (double width = 3.0 ; width <= 6.0; width+=0.6) {
hmap.put(id++, new double[] {width, height}) ;
}
}
//output
for(Integer iD : hmap.keySet()) {
System.out.printf("%2d %3.2f %s %3.2f \n",iD,hmap.get(iD)[0],"-",hmap.get(iD)[1]);
}
}发布于 2017-03-17 04:28:59
表示网格数据结构的最简单方法是使用网格所包含的数据类型的二维数组,您可以声明如下
Double[][] grid = new Double[5][5]这基本上是一个数组,5个数组,5个数组,或者更多,简单地说,放5行和5列。当你用这种方式构造数据时,就很容易在网格中找到特定的方块,并更新/查看它们,或者对整个网格中的每个方块、每一行、每一列等进行迭代。迭代2d数组的方法是使用两个嵌套循环。外部重新分配您拥有的行数和内部表示每一行的记录或数据数的内部,例如对于上面的网格。
for(int i = 0; i < 5; i++){
for(int j = 0; j < 5; j++){
System.out.println(grid[i][j].toString());
}
}上面的代码击中每个正方形,并在网格中打印该正方形数据的内容。例如,如果你想从2d切换到3d,你会有3个嵌套的,一个做一行,另一个做正方形,得到一个平面,另一个做z,得到深度,然后你会有一个三维数据结构,可以很容易地访问和迭代。我刚刚完成了一个下棋游戏使用2d数组的JButtons,所以让我知道,如果你有任何进一步的问题。
https://stackoverflow.com/questions/42848665
复制相似问题