我将首先解释这个场景。我必须创建一个矢量来保存圆圈列表。然后我创建一个圆形对象,并将其添加到 Vector 中。最后,我必须打印列表中每个圆圈的状态(定义状态并不重要,重要的是颜色和位置等)。
基本上我的问题是,我如何保持圆圈,以便我可以传入其中一个圆圈的名称,它将打印正确的圆圈状态。向您展示我的代码可能会更清晰。
我有 3 个类,主要的类称为 Lab83Test,矢量类称为 CircleList,Circle 类称为 Circle。(格式变得很奇怪,我无法修复它,所以很抱歉!
实验室83测试:
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();
}
}
圈子列表:
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() {
}
}
圆类不是太重要,它有很多移动圆的方法。最主要的是它必须返回其状态。
如果您只想遍历列表中的所有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();
}
编辑1:关于您的评论:您的向量没有定义的类型。更改此设置:
...
public class CircleList {
private Vector<Circle> circleVector;
public CircleList() {
circleVector = new Vector<Circle>();
}
...