2016-12-03 6 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; 
} 

Как я могу получить результаты того, что печатается в методе проверки для печати в методе toString до /n? Я попытался скопировать то, что находится в моем методе проверки, и поместить его в метод toString, но он просто печатает хеш-код местоположения @. Есть ли способ просто скопировать результат строки метода проверки для целей печати в toString?

В основном, я спрашиваю, как я могу просто взять строку, которая выводится в методе проверки, и напечатать ее вместо этого в моем методе toString.

+0

Если вы хотите распечатать информацию об объекте 'Person', используйте метод' toString() 'в классе' Person'. –

+0

Это уже реализовано в классе person 'public String toString() { String str =" "; if (gender == 'F') str + = "женщина"; else if (gender == 'M') str + = "мужчина"; else str + = "unknown",; str + = ageRange + "'s,"; str + = высота + "m"; return str; } ' – a44d

+0

Теперь, если я создаю новый объект-человек в toString в детективе и распечатаю его, он точно напечатает то, что указано выше ^^, когда ему нужно распечатать преобразование M-> male и т. Д. – a44d

ответ

0

Извлечь str переменную на уровне экземпляра, а не объявить ее в методе check.

теперь ваш toString метод:

public String toString() 
{ 
    return str; 
} 

обеспечения для вызова check, прежде чем приложение вызывает toString, один из способов сделать это путем вызова метода check из Detective конструктора.

+0

не может этого сделать. str будет незаявленной. – a44d

+0

Что это значит «необъявленный». Строка str = ""; // на уровне экземпляра – ManishKr

+0

вы хотите сделать 'Private String 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; 
}