奇怪的输出无法解决

时间:2016-10-16 05:35:54

标签: java arraylist output

我只是尝试使用我制作的名称类来打印ArrayList。

这是方法

private static ArrayList createActorList() {
    ArrayList<Name> actors = new ArrayList<>();
    actors.add(new Name("Tom","Cruise"));
    actors.add(new Name("Sylvester","Stallone"));
    actors.add(new Name("Michael J.","Fox"));
    actors.add(new Name("Arnold","Schwarzenegger"));
    actors.add(new Name("Al","Pacino"));
    actors.add(new Name("Harrison","Ford"));
    actors.add(new Name("Matt","Dillon"));
    actors.add(new Name("Michael","Biehn"));
    actors.add(new Name("Emilio","Estevez"));
    actors.add(new Name("Rob","Lowe"));
    return actors;
}

名称类 - 名称类适用于调用时打印名称的其他程序。

    public class Name implements NameADT{
        public String first;
        public String last;
        public String natural;
        public String formal;
        public String check;

   public Name(String firstName, String lastName) {
    first = firstName;
    last = lastName;

}

@Override
public String first() {
    return first;
}

@Override
public String last() {
    return last;
}

@Override
public String natural() {
    natural = first + " " + last;
    return natural;
}

@Override
public String formal() {
    formal = last + ", " + first;
    return formal;
}

我打印时的输出

演员......

simplethings.Name@7852e922<br>
simplethings.Name@4e25154f<br>
simplethings.Name@70dea4e<br>
simplethings.Name@5c647e05<br>
simplethings.Name@33909752<br>
simplethings.Name@55f96302<br>
simplethings.Name@3d4eac69<br>
simplethings.Name@42a57993<br>
simplethings.Name@75b84c92<br>
simplethings.Name@6bc7c054<br>

2 个答案:

答案 0 :(得分:-1)

您的问题在于Java如何存储对象(非原始数据类型)。简而言之,不存储基本数据类型(int s,double s,float等)的变量只保存存储实际数据的地址。这意味着变量只将引用保存到内存中的对象,而不是对象本身。

当您尝试打印Name对象(计算机存储实际实例的内存中的地址)时,您就会看到这一点。

要解决此问题,您可以覆盖toString() Object方法,该方法被隐式调用以将对象转换为字符串以进行打印。在Name课程中,覆盖它并返回您的名字和姓氏:

@Override
public String toString() {
    return first + " " + last;
}

答案 1 :(得分:-2)

问题是因为您正在尝试按原样打印对象。尝试使用列表迭代器并打印名称。类似的东西:

ListIterator<String> itr=al.listIterator();  
while(itr.hasNext()){ \\traversing elements in forward direction...
System.out.println(itr.next());  
 }