如何在toString()方法中打印我的数组?

时间:2014-12-09 00:09:41

标签: java arrays tostring

我正在尝试通过toString()打印一个数组,所以我可以将它调用到另一个方法。我究竟做错了什么?为什么不编译,什么是更好的解决方案。

public class Applicants
{
    private String applicant[];
    public Applicants()
{
    Application student1 = new Application()
    Application student2 = new Application()
    Application student3 = new Application()
    Application student4 = new Application()
    Application student5 = new Application()
    Application student6 = new Application();

    Application applicant[] = new Application[5];
    applicant[0] = student1;
    applicant[1] = student2;
    applicant[2] = student3;
    applicant[3] = student4;
    applicant[4] = student5;
    applicant[5] = student6;

    for (int index = 0; index < applicant.length; index++)
    {   
         System.out.println(applicant[index]);
    }

}
public String toString(String[] applicant)
{
    String output = new String();
    String total;
    for (int index = 0; index < applicant.length; index++)
    {
        total = System.out.println(applicant[index]);
    }
    return total;
}

}

2 个答案:

答案 0 :(得分:0)

有三件事错误,一件“嘿,注意”。

  1. 您正在隐藏构建器内部的applicant字段。这意味着当您完成构造函数后,String[]为{{ 1}}。尚未满null,只有null

    您可能要做的是将null声明为您的字段,然后不在构造函数内重新声明它。

  2. private Application[] applicant不是有效的声明。您无法将total = System.out.println(applicant[index]);方法的结果分配给任何内容。你在构造函数中使用它是正确的,所以你在这里没有弄清楚它是令人惊讶的。

  3. void不接受任何争论。使用您的字段。

  4. 请在toString对象上定义toString,因为这会让您的生活更轻松。否则,从该对象中提取有意义的信息。在任何一个事件中你都要对这个进行一些字符串连接,我将其作为练习留给读者。

答案 1 :(得分:0)

您需要在Application类中声明toString方法:

public class Application {

    @Override
    public String toString() {
       // your code here
    }
 }

请注意使用覆盖注释。这将使编译器检查您实际上是否覆盖了您所说的方法 - 在当前代码中,您不是因为toString不接受任何参数。

至于toString的实现,我会选择Google Guava

@Override
public String toString() {
    return MoreObjects.toStringHelper(this.getClass()).add(..).add(..).toString();
 }

有关详细信息,请参阅此处:https://code.google.com/p/guava-libraries/wiki/CommonObjectUtilitiesExplained

Guava docs