2017-05-06 51 views
0

我想创建一个'Map'对象。地图对象保存点(int x,int y)和颜色

这个'Map'对象应该包含'Point'(int x,int y)对象 - 并且每个点都有一个由char(一个字母)表示的颜色。

这里是一个picture for example

enter image description here

我不能字段添加到 '点'。我不能使用通用对象。

我想到的是如何运用这个“地图”对象: 我想也许这可以有字段:

private Point[] MapPoints; 
    private char[] PointsColors; 

“点[] MapPoints”数组将举行的点。 “char [] PointsColors”将分别保存颜色。

我没有想到它,但我觉得它有点笨拙,可能在后面的代码中很难。

我在面向对象编程的一个非常基本的水平 - 所以请考虑它,当你提供一个解决方案 - 它应该是基本,仅限于我们在课堂上所学到的。

+2

,如果你设计了一个二维数组像*** char [] [] mapColor ***你不需要***点***类了,然后你可以浏览/迭代行和列在地图中查找/设置颜色。 –

+0

谢谢。我不确定自己明白。我的地图应该包含X点,Y点和每个(x,y)的颜色。 我不能在同一个数组中保存'int'和'char'。 – PillowTrip

+0

您不需要存储'x'和'y',将该点的颜色存储在'mapColor [x] [y]'中,如果您想访问它,可以直接访问它。 –

回答

0

让我们来避免泛型类和计划。从要求中清楚地看到,我们不允许在以外添加字段xy并且Point必须具有xy。所以color一定不能是point的一部分。包含char项目以表示点的二维数组也不是一种选项,因为从给定值我们将无法逆向设计坐标,并且明确指出Point将具有xy字段。因此,这意味着我们有一个Pointclass

public class Point { 
    public int x; 
    public int y; 

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

由于map必须是一个对象,将举行points,让我们定义其class

public class Map { 
    public Point[][] points; 
    public char[][] colors; 

    public getColorOfPoint(Point point) { 
     return colors[point.x, point.y]; 
    } 

    public Map(Point[][] points, char[][] colors) { 
     this.points = points; 
     this.colors = colors; 
    } 
} 
+0

非常感谢!很有帮助! – PillowTrip

+0

@PillowTrip欢迎您。如果这个答案解决了你的问题,你可以考虑接受它。 –

1

如果您设计了一个像char[][] pointsColors这样的二维数组,您将不再需要Point类.....然后您可以浏览/迭代行和列以在地图中查找/设置颜色,此方法有几个积极的东西

  1. 你不需要为此创建一个类的点。

  2. 您可以设置/只要知道坐标所在直接获得色彩......

例子:

char[][] pointsColors = new char[2][2]; 
// set color at 0,0 to red 
pointsColors[0][0] = 'r'; 
// set color at 1,1 to green 
pointsColors[1][1] = 'g'; 
// get color at 0,1 
char foo = pointsColors[0][1]; 
0

您可以使用HashMap的集合,其中你可以使用你的点对象作为键和char值(代表点的颜色)作为它的值。这样您可以跟踪与对象相关的颜色。

+0

谢谢,但我没有被允许使用“HashMaps”,因为我们还没有学习它。 – PillowTrip

0

Thanks @ΦXocę웃Пepeúpaツ,据我所知,但我不得不使用'Point'类,我相信。

更准确,我需要完成以下代码:

public class Map { 

// (Add fields here I assume?). 

    //Here I need to complete the following constructor (has to be like that) 
    public Map(char[][] map) { 

    } 
} 

我很困惑,我甚至不知道要问什么。那么我怎么从这里继续?

- EDIT--

OMG,他们只希望我这么做? (这是一个问题)

public class Map { 

    private char[][] MapPoints; 

     public Map(char[][] map) { 
     MapPoints = map;  
    } 
} 

真的吗?

相关问题