0

シナリオを説明することから始めます。サークルのリストを保持するためにベクターを作成する必要があります。次に、円オブジェクトを作成し、それをベクターに追加します。最後に、リスト内の各円の状態を印刷する必要があります(状態を定義することは重要ではなく、色や位置などだけです)。

基本的に私の問題は、円を保持して、そのうちの1つの名前を渡すと、正しい円の状態が出力されるようにする方法です。私のコードを表示する方がわかりやすいかもしれません。

私には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() {

    }
}

サークルクラスはそれほど重要ではなく、サークルなどを移動するためのメソッドがたくさんあります。主なことは、その状態を返さなければならないということです。

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

または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>();
  }
  ...
于 2012-11-30T13:07:08.670 に答える