0

ここに新しいプログラマー:

すぐ上のメソッドからAlbumクラスのインスタンスを呼び出せるようにするためのヘルプが必要です。

public static void main(String[] args) {
        Album a1 = new Album("Fede Finn og Funnyboys", "Glade Aber");

        Ar1.addAlbum(a1);

    }

    public void runner1() {
        Ar1.sortList();
        System.out.println("");
        toTxt(1);
        Ar1.removeAlbum(Album.**a1**);

私はこの間違いを犯します:a1は解決できないか、フィールドではありません。

簡単な問題-わかっています、ごめんなさい:)

どうも

4

4 に答える 4

0

a1のスコープはメインの内側にあるため、メインの外側で使用しようとすると、上記のエラーが発生します。

Album a1 = new Album("Fede Finn og Funnyboys", "Glade Aber");
public static void main(String[] args) {
     Ar1.addAlbum(a1);

}
于 2013-03-09T13:18:03.540 に答える
0

mainメソッドは別のメソッドであり、このメソッドにファイルされたクラスを呼び出すことはできません

あなたがそれをしたいのなら、ここにコードデモがあります

class Albumdemo{
public static void main(String[] args) {
    Album a1 = new Album("Fede Finn og Funnyboys", "Glade Aber");
    Albumdemo Ar1 = new  Albumdemo();
    Ar1.addAlbum(a1);

}

public void runner1(Album a1) {
    Ar1.sortList();
    System.out.println("");
    toTxt(1);
    Ar1.removeAlbum(Album.**a1**);
}

}
于 2013-03-09T13:21:38.227 に答える
0

a1スコープはメインの内側にのみあります。a1これは、mainメソッドでのみ使用できることを意味します。mainの外部で使用できるようにするには、使用するメソッドにパラメーターとして渡す必要があります。したがって、メソッドで使用する場合a1runner1runner1がAlbumクラスのメソッドであると仮定すると、次のようなことをする必要があります:

public static void main(String[] args) {
        Album a1 = new Album("Fede Finn og Funnyboys", "Glade Aber");
        a1.runner1();//you need to call runner1 on the Album object

        Ar1.addAlbum(a1);

    }

Albumオブジェクトでrunner1を呼び出すとa1、内部runner1でそのオブジェクトをキーワードで参照できます。this

編集:考え方はここでも同じです。mainメソッドでAlbumオブジェクトを作成し、呼び出しの下部が存在するメソッドを呼び出します。このメソッド内で、によってAlbumオブジェクトを参照しますthis。たとえば、メソッドが呼び出された場合、次のようrunner1になります。

public void runner1() {
        Ar1.sortList();
        System.out.println("");
        toTxt(1);
        Ar1.removeAlbum(this);//refer to the Album object you want to remove by this
}

したがって、メインメソッドから、Albumオブジェクトでメソッドを呼び出すたびにrunner1、このオブジェクトはとして参照さthisれ、メソッドでキーワードを使用できますremoveAlbum

したがって、メインに、という3つのAlbumオブジェクトがあり、この順序a1, a2, a3でメソッドを呼び出す場合は、次のようになります。runner1

a1.runner1();
a2.runner1();
a3.runner1();

次に、そのメソッドで参照しているため、呼び出しごとにメソッドを呼び出すオブジェクトが削除されますthis

これで問題が解決することを願っています

于 2013-03-09T13:23:14.620 に答える
0

a1は、mainメソッドでローカルスコープされます。代わりに変数をメンバーとして割り当てると、それを参照できるようになります。

public class Album {
    private static ArrayList<Album> Ar1 = new ArrayList<Album>(); // I assume you have one of these here?
    private static Album a1 = new Album("Fede Finn og Funnyboys", "Glade Aber");

    public static void main(String[] args) {
        Ar1.addAlbum(a1);
        new Album().runner1();
    }

    public void runner1() {
        Ar1.sortList();
        System.out.println("");
        toTxt(1);
        Ar1.removeAlbum(a1);
    }
}
于 2013-03-09T13:23:38.923 に答える