0

新程序员在这里:

我需要帮助才能从上面的方法调用相册类的实例。

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 的范围在 main 内部,因此如果您尝试在 main 外部使用它,您将收到上述错误。

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文件

如果你想这样做,这里是代码演示

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 之外使用它,您需要将它作为参数传递给您将在其中使用它的方法。因此,如果您想a1在您的runner1方法中使用它(假设 runner1 是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
}

因此,在您的 main 方法中,每次调用runner1Album 对象的方法时,都会将该对象称为 as this,您可以在方法中使用关键字removeAlbum

因此,如果您有三个 Album 对象,则在您的 main 中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 回答