我将首先解释一下这个场景。 我必须创建一个Vector来保存一个Circles列表。 然后我创建一个圆形对象,并将其添加到Vector。 最后,我必须在列表中打印每个圆圈的状态(状态不是很重要,只有它的颜色和位置等)。
基本上我的问题是,如何抓住圆圈以便我可以传递其中一个的名称,它将打印正确的圆圈状态。向你展示我的代码可能会更清楚。
我有3个类,一个名为Lab83Test,一个名为CircleList,一个名为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() {
}
}
圈子类并不重要,它有很多方法可以移动圆圈和东西。最重要的是它必须恢复其状态。
答案 0 :(得分: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>();
}
...