2017-05-06 24 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;  
    } 
} 

真的嗎?

相關問題