19

make属性と、を持つ車のクラスがありregistration、それらを格納するためにArrayListを作成するとします。ArrayListのすべての要素を表示するにはどうすればよいですか?

私は今このコードを持っています:

public Car getAll()
{
    for(int i = 0; i < cars.size(); i++) //cars name of arraylist
    {
        Car car = cars.get(i);  
        {
            return cars.get (i);
        }
    }
    return null;
}

正常にコンパイルされますが、次のコードを使用してテスタークラスで試してみると次のようになります。

private static void getAll(Car c1)
{
    ArrayList <Car> cars = c1.getAll(); // error incompatible type
    for(Car item : cars)
    {   
        System.out.println(item.getMake()
                + " "
                + item.getReg()
                );
    }
}

互換性のないタイプのエラーが発生します。私のコーディングは正しいですか?できない場合は、誰かがそれがどうあるべきかを教えてください。

ありがとうございました

4

10 に答える 10

13

このようなものを作ろうとしていますか?

public List<Car> getAll() {
    return new ArrayList<Car>(cars);
}

そして、それを呼び出します:

List<Car> cars = c1.getAll();
for (Car item : cars) {   
    System.out.println(item.getMake() + " " + item.getReg());
}
于 2009-04-17T22:20:07.680 に答える
2

もう1つのアプローチは、クラスにtoString()メソッドを追加し、ArrayListのメソッドにすべての作業を任せることです。CartoString()

@Override
public String toString()
{
    return "Car{" +
            "make=" + make +
            ", registration='" + registration + '\'' +
            '}';
}

出力には1行に1台の車は含まれませんが、配列の内容を確認したいだけの場合は、すばやく簡単に実行できます。

List<Car> cars = c1.getAll();
System.out.println(cars);

出力は次のようになります。

[Car{make=FORD, registration='ABC 123'},
Car{make=TOYOTA, registration='ZYZ 999'}]
于 2009-04-17T23:34:33.213 に答える
2

あなたのgetAll()方法はすべてを取得しません。先頭車を返します。

returnステートメントはループを終了します。

于 2009-04-17T22:13:06.467 に答える
2

Car クラスの getAll 関数が単一の Car を返し、それを配列に割り当てたいため、エラーが発生しています。

実際には明確ではなく、さらにコードを投稿することをお勧めします。なぜ単一の Car を関数に渡すのですか? 車で getAll を呼び出す意味は何ですか。

于 2009-04-17T22:14:09.880 に答える
2

あなたが何をしようとしているのかはまったく明らかではありません。関数 getAll() は、Car ではなく List<Car> を返す必要があります。そうでなければ、なぜそれを getAll と呼ぶのでしょうか?

あなたが持っている場合

Car[] arrayOfCars

リストが必要な場合は、次のように簡単に実行できます。

List<Car> listOfCars = Arrays.asList(arrayOfCars);

配列はここに文書化されています。

于 2009-04-17T22:20:14.297 に答える
2

接線: String.format() 岩:

public String toString() {
    return String.format("%s %s", getMake(), getReg());
}

private static void printAll() {
    for (Car car: cars)
        System.out.println(car); // invokes Car.toString()
}
于 2009-04-17T23:14:28.423 に答える
1

こんにちは、申し訳ありませんが、2 番目のコードは次のようになります。

private static void getAll(CarList c1) {

ArrayList <Car> cars = c1.getAll(); // error incompatible type
for(Car item : cars)
{   
      System.out.println(item.getMake()
                       + " "
                       + item.getReg()
                       );
}

}

arraylist とそのメソッドを含む CarList というクラスがあるため、テスター クラスには、基本的にその CarList クラスを使用する次のコードがあります。

カーリスト c1; c1 = 新しい CarList();

車の追加と削除、個々の車の表示など、他のすべてが機能します。必要なのは、配列リスト内のすべての車を表示するためのコードだけです。

于 2009-04-17T22:21:56.337 に答える