如何在同一个类的toString方法中打印方法的结果?

时间:2016-12-03 22:01:31

标签: java methods tostring

我的班级名为Detective

  public boolean check (String line)
    {
        // Separte the information into three categories
        String[] categories = line.split("; ");
        String[] info;

        // Get the suspect's information
        info = categories[0].split(", ");
        suspect = new Person(info[0].charAt(0), Integer.parseInt(info[1]), Double.parseDouble(info[2]));

       Person person = new Person();
       //System.out.println(theOracle.checkPerson(suspect));
       if (theOracle.checkPerson(suspect) == 0){

           String st = null;
        categories[0] = st;
           String str = "";
           if (info[0].charAt(0) == 'M')
               str += "Male, ";
           else if (info[0].charAt(0) == 'F')
               str += "Female, ";
           else
               str += "unknown, ";

           str += Integer.parseInt(info[1]) + "'s, ";
           str += Double.parseDouble(info[2]) +"m";
           System.out.println(str);
            }
       // Get the location
       info = categories[1].split(", ");
       suspectLocation = new Location(Double.parseDouble(info[0]), Double.parseDouble(info[1]));
       //System.out.println(theOracle.checkLocation(suspectLocation));

       // Get the time
       info = categories[2].split(":");
       suspectTime = new Time(Integer.parseInt(info[0]), Integer.parseInt(info[1]));

        return false;
    }

和toString方法也在同一个类中:

public String toString()
{
    String str = "";
    str = "Person: " +   "/n";
    return str;
}

如何在/n之前获取在check方法中打印的内容的结果,以便在toString方法中打印?我试图复制check方法中的内容并将其放在toString方法中,但它只打印一个位置@哈希码。有没有办法简单地将用于打印目的的check方法的字符串结果复制到toString中?

基本上我要问的是如何简单地获取check方法中输出的str并将其打印在我的toString方法中。

2 个答案:

答案 0 :(得分:0)

在实例级别取出str变量,而不是在check方法中声明它。

现在是您的toString方法:

public String toString()
{
    return str;
}

确保在您的应用程序调用{​​{1}}之前致电check,一种方法是通过调用toString构造函数中的check方法。

答案 1 :(得分:0)

您需要更改方法check()以返回字符串

public Strin gcheck (String line){...

print调用移除或保留在check()中:

System.out.println(str);

而不是return false;将其更改为return str;

现在在toString()中调用check()并连接结果。

public String toString()
{
    String str = "";
    str = "Person: " +  check() + "/n";
    return str;
}