我怎么能用arraylist或array做到这一点?

时间:2018-02-21 18:21:48

标签: java arraylist

我正在尝试使用Star类中的addStar函数向星星arraylist添加一些字符串名称。 但是我遇到了这样的错误:

  

类型arraylist中的方法add(Star)不适用于此参数。

Eclipse告诉我字符串参数是不可接受的,所以我该怎么做?

import java.util.ArrayList;
import java.util.Collection;

public class Star { 
    public static String name; 
    public static ArrayList<Star> stars=new ArrayList<>();     

    public Star(String name) {  
        this.name=name;     
    }

    public static void addStar(String name) {   
        stars.add(name);     
    }    
}

1 个答案:

答案 0 :(得分:1)

很遗憾,您的错误是因为您将name设为static。由于您将name设为static,这意味着该名称只能容纳一件事。因此,每当你创建一个新的Star对象时,name的值将变为最新的Star对象所拥有的值,因此会出现&#34;失去星星&#34;,如你所说,因为由于namestatic,因此只能有一个名称。

更正的代码应为

public class Star { 
public String name; 
public static ArrayList<Star> stars=new ArrayList<>();

public static void main(String [] args) {
    addStar("some name");
    addStar("some second name");
    System.out.println(stars);
}

public String getName() {
    return name;
}

public Star(String name) { 
    this.name=name; 
    } 

public static void addStar(String name) { 
    Star s1=new Star(name); 
    stars.add(s1); 
    } 

public String toString() {
    String res = "";
        res+=getName();
    return res;
}

}

如您所见,我制作了toString()方法。在main方法中,打印时 stars,它会自动调用toString(),但此处我会覆盖默认的toString()方法 这样stars ArrayList将以我们想要的方式打印出来,这是默认方式 只需打印存储对象的内存中的位置。如果你有任何 问题,请继续问。