2016-12-03 63 views
0

我有这个方法在我的课叫Detective如何在同一个类中的toString方法中打印方法的结果?

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之前用toString方法打印?我试图复制我的检查方法中的内容,并将它放在toString方法中,但它只是打印位置@哈希码。有什么方法可以简单地将用于打印目的的检查方法的字符串结果复制到toString中?

基本上我问的是我怎样才能简单地在检查方法中输出str,并在我的toString方法中打印它。

+0

如果要打印出Person类的对象信息,请在Person类中实现'toString()'方法。 –

+0

这已经在person类中实现了'public String toString() { String str =“”; if(gender =='F') str + =“female,”; else if(gender =='M') str + =“male,”; else str + =“unknown,”; str + = ageRange +“'s,”; str + = height +“m”; return str; }' – a44d

+0

现在,如果我在侦探的toString中创建一个新的person对象,并打印它正确地打印上面^^所说的内容,当它需要打印M - >男性转换等时。 – a44d

回答

0

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

现在您toString方法:

public String toString() 
{ 
    return str; 
} 

确保调用check应用程序调用toString之前,要做到这一点的一种方式是通过调用从Detective构造的check方法。

+0

不能这样做。 str将不被声明。 – a44d

+0

这是什么意思'未申报'。 String str =“”; //在实例级别 – ManishKr

+0

你的意思是做私人字符串str;' – a44d

0

你需要改变方法check()返回一个字符串

public Strin gcheck (String line){... 

删除或保留的print呼叫检查():

System.out.println(str); 

和替代return false;其更改为return str;

现在在toString()打电话给check()并连接结果。

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