Java 在位置(槽)和坐标之间来回转换

Java 在位置(槽)和坐标之间来回转换,java,math,Java,Math,基本上,想象一个宽度为9(从0开始)的基于位置的区域 然而,我并没有转换成坐标,并将位置0转换成(0,0),这基本上就是我想要得到的 ╔══════╦══════╦══════╦══════╦═════╦═════╦═════╦═════╦═════╗ ║ -4,1 ║ -3,1 ║ -2,1 ║ -1,1 ║ 0,1 ║ 1,1 ║ 2,1 ║ 3,1 ║ 4,1 ║ ║ -4,2 ║ -3,2 ║ -2,2 ║ -1,2 ║ 0,2 ║ 1,2 ║ 2,2 ║ 3,2 ║ 4,2 ║ ║ -

基本上,想象一个宽度为9(从0开始)的基于位置的区域

然而,我并没有转换成坐标,并将位置0转换成(0,0),这基本上就是我想要得到的

╔══════╦══════╦══════╦══════╦═════╦═════╦═════╦═════╦═════╗
║ -4,1 ║ -3,1 ║ -2,1 ║ -1,1 ║ 0,1 ║ 1,1 ║ 2,1 ║ 3,1 ║ 4,1 ║
║ -4,2 ║ -3,2 ║ -2,2 ║ -1,2 ║ 0,2 ║ 1,2 ║ 2,2 ║ 3,2 ║ 4,2 ║
║ -4,3 ║ -3,3 ║ -2,3 ║ -1,3 ║ 0,3 ║ 1,3 ║ 2,3 ║ 3,3 ║ 4,3 ║
╚══════╩══════╩══════╩══════╩═════╩═════╩═════╩═════╩═════╝
本质上,X值的中心是0,向左或向右移动,减小或增大。但是,我没有将y设置为中心,因为y值可以扩展到无穷大

我需要弄清楚如何用Java中的以下方法实现这一点

getPosition(int x, int y);    //RETURNS (int position)
getCoordinates(int position)    //RETURNS (int x, int y)

有什么想法吗?

使用以下方法。注意,我使用
java.awt.Point
表示
x
y
方法中的
getCoordinates(int-position)
坐标

public int getPosition(int x, int y) {
    return ((y - 1) * 9) + (x + 4);
}

public Point getCoordinates(int position) {
    //calculate x and y
    int y = (int) ((position / 9) + 1);
    int x = (position - ((y - 1) * 9)) - 4;

    Point point = new Point(x, y);
    return point;
}

你在找模数和除法吗?是的,我很确定这是一种方法,但我有问题。谢谢!看起来像我需要的,我来测试一下!是的,只是想测试一下。作品我强烈建议删除所有魔法数字,代之以最终数字。那么改变宽度就容易多了虽然它确实更适合更大的宽度,但我只使用了一次,宽度不会改变,因此我认为我不需要改变它。它工作得很好,我希望它是那样的。Channa Jayamuni准确地回答了我需要的,正如我在问题中所说的宽度是9
public int getPosition(int x, int y) {
    return ((y - 1) * 9) + (x + 4);
}

public Point getCoordinates(int position) {
    //calculate x and y
    int y = (int) ((position / 9) + 1);
    int x = (position - ((y - 1) * 9)) - 4;

    Point point = new Point(x, y);
    return point;
}