我正在尝试使用9x9,12x12,15x15等阵列,并让程序将它们解释为多个3x3正方形。
例如:
0 0 1 0 0 0 0 0 0
0 0 0 0 0 2 0 0 0
0 0 0 0 0 0 0 3 0
0 0 0 0 0 0 6 0 0
0 0 4 0 0 0 0 0 0
0 0 0 0 0 5 0 0 0
0 0 0 0 0 0 0 0 0
0 7 0 0 0 0 0 0 0
0 0 0 0 8 0 0 0 9
将被理解为:
0 0 1 | 0 0 0 | 0 0 0
0 0 0 | 0 0 2 | 0 0 0
0 0 0 | 0 0 0 | 0 3 0
------+-------+------
0 0 0 | 0 0 0 | 6 0 0
0 0 4 | 0 0 0 | 0 0 0
0 0 0 | 0 0 5 | 0 0 0
------+-------+------
0 0 0 | 0 0 0 | 0 0 0
0 7 0 | 0 0 0 | 0 0 0
0 0 0 | 0 8 0 | 0 0 9
其中:
"1" @ [0][2] is in box "[0][0]"
"2" @ [1][5] is in box "[0][1]"
...
"6" @ [3][6] is in box "[1][2]"
...
"9" @ [8][8] is in box "[2][2]"
我可以使用row % 3
和column % 3
来确定框中的行和列值,但是如何确定数组中给定值存储在哪个框中?
此公式可用于以下方法中。
public int[] determineCoordinatesOfBox(int rowInArray, int columnColumnInArray) {
// determine row value
// determine column value
// return new int[2] with coordinates
}
似乎有可能,我一直在为此而努力。也许我制作一个简单的问题太难了?
非常感谢您的帮助!
答案 0 :(得分:2)
您正在寻找/
运营商:
box[0] = rowInArray / 3;
box[1] = columnInArray / 3;
答案 1 :(得分:0)
如果我理解正确,那只是简单的整数除法。
由于您正在编写Java(至少在C,C ++和C#中它是相同的),它只是/
运算符:
int rowInArray = 3;
int columnInArray = 7;
int boxY = rowInArray / 3; // will evaluate to 1
int boxX = columnInArray / 3; // will evaluate to 2
int rowInBox = rowInArray % 3; // will evaluate to 0
int columnInBox = columnInArray % 3; // will evaluate to 1
只保留除法整数的参数 - 7 / 3
为2
,但7 / 3.0
或7.0 / 3
为2.5
。