2012-11-30 38 views
0

我將從解釋場景開始。 我必須創建一個Vector以保存圈子列表。 然後我創建一個圓形對象,並將其添加到Vector中。 最後,我必須打印列表中每個圓圈的狀態(狀態不是重要的定義,只是它的顏色和位置等)。通過使用類名稱從Java Vector檢索對象

基本上我的問題是,我如何保持圈子,以便我可以通過其中一個名稱,它會打印正確的圈子的狀態。向您展示我的代碼可能會更清楚。

我有3個類,主要一個叫做Lab83Test,Vector一個叫CircleList,而Circle一個叫Circle。 (!格式化已經怪異,我不能修復它,所以道歉)

Lab83Test:

public class Lab83Test { 

    public static void main(String[] args) { 
     makeNewCircle(); 
    } 
    public static void makeNewCircle() { 
     CircleList newList = new CircleList(); 
     Circle newCircle = new Circle(); 
     newList.addCircle(newCircle); 
     newCircle.makeVisible(); 
     newList.printDetails(); 
    } 
} 

CircleList:

import java.util.Vector; 

public class CircleList { 
    private Vector circleVector; 

    public CircleList() { 
     circleVector = new Vector(); 
    } 
    public void addCircle(Circle circleName) { 
      circleVector.add(circleName); 
      printDetails(); 
    } 
    public void addCircleToPlace(Circle circleName, int pos) { 
     circleVector.add(pos, circleName); 
     printDetails(); 
    } 
    public void removeCircleFromPos(int pos) { 
     circleVector.remove(pos); 
     printDetails(); 
    } 
    public void removeAllCircles(int pos) { 
     circleVector.clear(); 
     printDetails(); 
    } 
    public void printDetails() { 

    } 
} 

Circle類是不太重要了,它有很多方法來移動圈子和東西。最主要的是它必須返回它的狀態。

+0

爲什麼你不能修復格式? ^^ – brimborium

+0

什麼是「圈子的名字」?載體只處理列表中圓的索引訪問 – Mark

+0

另外:你究竟想要什麼?除了'printDetails()'還沒有實現之外,我看不出有什麼問題。 – brimborium

回答

1

如果你只是想遍歷列表中的所有Circel和打印他們的名字,你可以這樣來做:

public void printDetails() { 
    for (Circle c: circleVector) { 
    System.out.println(String.format("%s: center=(%.1f/%.1f) radius=%.1f", c.getName(), c.getCenterX(), c.getCenterY(), c.getRadius())); 
    } 
} 

我不知道你的Circle類的樣子,所以我只是認爲一些方法名稱。

如果你想找到某個名字的圓圈:

for (Circle c: circleVector) { 
    if (c.getName().equals(nameToFind)) return c; 
} 

或者你可以使用一個Map<String, Circle>,而不是你的載體,只是做return circleMap.get(name);。然後你addCircle()應該是這樣的:

public void addCircle(Circle circle) { 
    circleMap.add(circle.getName(), circle); 
    printDetails(); 
} 

EDIT1:關於你的評論:您的矢量沒有定義的類型。改變這個:

... 
public class CircleList { 
    private Vector<Circle> circleVector; 

    public CircleList() { 
    circleVector = new Vector<Circle>(); 
    } 
    ... 
+0

這就是我以前的嘗試,雖然我得到了錯誤 '發現:java.lang.Object 必需:圓圈' 我還沒有完全掌握這一點,所以我不知道它在問什麼 – Jamie

+0

因爲你的矢量不指定它的類型。試試'Vector '。 - >見**編輯1 ** – brimborium

+1

@brimborium ..當然,括號內的內容是一個可怕的想法。所以,你可以從有價值的選項中刪除它。 –