0

我将从解释场景开始。我必须创建一个向量来保存一个圆圈列表。然后我创建一个圆形对象,并将其添加到 Vector。最后,我必须打印列表中每个圆圈的状态(状态并不重要,只需定义颜色和位置等)。

基本上我的问题是,我如何握住圆圈,以便我可以传入其中一个的名称,它会打印正确的圆圈状态。向您展示我的代码可能会更清楚。

我有 3 个类,主要的一个叫做 Lab83Test,Vector 一个叫做 CircleList,Circle 一个叫做 Circle。(格式变得很奇怪,我无法修复它,所以很抱歉!)

Lab83测试:

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() {

    }
}

circle 类不是很重要,它有很多移动圆的方法和东西。主要的是它必须返回它的状态。

4

1 回答 1

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;
}

或者您可以使用 aMap<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>();
  }
  ...
于 2012-11-30T13:07:08.670 回答