新程序员:
我需要帮助才能从上面的方法调用类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无法解析或不是字段。
容易出问题 - 我知道,抱歉:)
THX
答案 0 :(得分:0)
a1的范围在main之内,所以如果你试图在main之外使用它,你会得到上面提到的错误。
Album a1 = new Album("Fede Finn og Funnyboys", "Glade Aber");
public static void main(String[] args) {
Ar1.addAlbum(a1);
}
答案 1 :(得分: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**);
}
}
答案 2 :(得分:0)
a1
范围仅在主要内部。这意味着您只能在main方法中使用a1
。为了能够在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);
}
在相册对象a1
上调用runner1后,在runner1
内,您可以通过关键字this
编辑:
这个想法在这里是一样的。您可以在main方法中创建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方法开始,每次在Album对象上调用runner1
方法时,此对象都将被称为this
,您可以使用removeAlbum
中的关键字方法
因此,如果您有三个名为a1, a2, a3
的相册对象,并且按此顺序调用runner1
方法,那么在您的主文件中:
a1.runner1();
a2.runner1();
a3.runner1();
然后每个调用都将删除调用该方法的对象,因为在该方法中this
引用它。
希望这能解决您的问题
答案 3 :(得分: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);
}
}