如何在一个函数中从用户检索X和Y坐标?(对于需要数组坐标的java游戏)
“getX函数将询问用户X坐标。它将返回用户输入的数字.getY具有相同的功能,消息被调整为要求Y坐标。”
这是我需要遵循的功能。 需要使用返回值将数字放在2D数组中。 我如何在一个功能中实现这一目标?
board[x][y] = 1;
编辑:我只能在java中做一些事情(对于计算测试,因此使用我们所教过的任何东西都不会获得分数--AQA AS Level)。
我需要在函数中扫描用户的输入,并返回主要的2D数组使用的两个坐标。
请告诉我,如果我感到困惑或者我没有意义,我会尝试更好地解释。
如果没办法这样做,请告诉我。 JimiiBee
答案 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
}