print toString()不会打印ArrayList类成员对象

时间:2016-11-22 05:59:37

标签: java arraylist tostring

为什么print toString()不打印Array Class成员对象?它说“不能返回无效结果”。当我的ArrayList私有对象包含值时,它需要什么类型的结果。

例如:在Person class-

public class Person { 

    private ArrayList <String> name;

    private ArrayList <Integer> number;

    public Person(ArrayList <String> thatName, ArrayList <Integer> thatNumber) 
    {
        name = new ArrayList <String>(thatName);
        number = new ArrayList <Integer>(thatNumber);
    }

    public ArrayList<String> getName() 
    {
        return name;
    }

    public ArrayList<Integer> getNumber() 
    {
        return number;
    }

    public String toString() 
    {
        return System.out.println(name + "" + number); //Gives error "cannot return a void result"    
    }   

另外,在这种情况下,我可以让String.format(,)工作吗?我试过,但它不起作用,因为ArrayList对象类型不是原始数据类型。

编辑:

以下是我如何调用Person类,但toString()不打印任何内容。

import java.util.ArrayList;
public class PersonTest {

public static void main(String[] args) {

    ArrayList <String> nam = new ArrayList <String>();
    ArrayList <Integer> numb = new ArrayList <Integer>();

    nam.add("Zeus");
    numb.add(99);

    Person pr = new Person(nam, numb);

    pr.toString();

}

}

2 个答案:

答案 0 :(得分:2)

您想要返回一个字符串,printlnvoid方法。

这个Python问题的某些方面 - How is returning the output of a function different than printing it?

更改

return System.out.println(name + "" + number)

return name + "" + number;

  

另外,在这种情况下,我可以使String.format(,)工作吗?

不确定。 return String.format("Names: %s\nNumbers: %s", name, number);

答案 1 :(得分:2)

System.out.println是一个空格,因此无法返回任何内容。 你应该做的是:

public String toString()
{
  return name + " " + number;
}

并在调用者中,使用person实例进行打印:

System.out.println(person.toString());

或以下,因为打印对象会自动调用toString()方法。

System.out.println(person);