在ONE函数中获取2D Array的坐标

时间:2014-01-17 18:19:40

标签: java function coordinates

如何在一个函数中从用户检索X和Y坐标?(对于需要数组坐标的java游戏)

“getX函数将询问用户X坐标。它将返回用户输入的数字.getY具有相同的功能,消息被调整为要求Y坐标。”

这是我需要遵循的功能。 需要使用返回值将数字放在2D数组中。 我如何在一个功能中实现这一目标?

board[x][y] = 1;
编辑:我只能在java中做一些事情(对于计算测试,因此使用我们所教过的任何东西都不会获​​得分数--AQA AS Level)。 我需要在函数中扫描用户的输入,并返回主要的2D数组使用的两个坐标。

请告诉我,如果我感到困惑或者我没有意义,我会尝试更好地解释。

如果没办法这样做,请告诉我。 JimiiBee

2 个答案:

答案 0 :(得分:1)

您可以返回一个2元素数组,将值连接成由分隔符分隔的字符串,或者创建一个包含x和y坐标的Dimension类。

String promptCoords()
{
    return promptX() + ":" + promptY();
}

int[] promptCoords()
{
    return new int[]{promptX(), promptY()};
}

Dimension promptCoords()
{
    return new Dimension(promptX(), promptY());
}

private class Dimension 
{
    int x, y;

    Dimension(int x, int y) 
    { 
        this.x  = x;
        this.y = y;
    }
}

int promptX(){return -1;}
int promptY(){return -1;}

答案 1 :(得分:1)

这里有很多资源可以实际获取用户输入。 Check out this post。创建数组我会做这样的事情:

public int[] getCoord(int[] coords) {
    coords[0] = getInt("Please enter x coordinate:");
    coords[1] = getInt("Please enter y coordinate:");
    return coords;
}

这将被称为:

coords = getCoord(coords);

用新值替换coords的旧值。

getInt方法如下所示:

private int getInt(String prompt) {
    Scanner scanner = new Scanner(System.in);
    System.out.println(prompt);

    int in = scanner.nextInt();
    scanner.close();
    return in;
}

当然,这可以合并为单个方法,避免重复打开和关闭扫描程序,但如果您在代码中的其他地方使用getInt(),这可能仍然是首选解决方案。

如果您被迫使用单独的方法,我们宁愿不必反复打开和关闭扫描仪,而是从getCoord类传递扫描仪。

public int[] getCoord(int[] coords) {
    Scanner scanner = new Scanner(System.in);
    coords[0] = getX(scanner, coords);
    coords[1] = getY(scanner, coords);
    scanner.close()
    return coords;
}

一个示例get方法:

private void getX(Scanner scanner, int[] coords) {
    System.out.println("Please enter x coordinate:");
    coords[0] = scanner.nextInt(); //Change 0 index to 1 for getY
}