一尘不染

如何在Java中正确覆盖toString()?

java

我需要toString()方法方面的帮助,这非常令人讨厌。我尝试在线查找,因为那toString是一个正在搞砸的地方,即使在那里,它也“找不到2号Kid构造函数”,我什至会做其他事情,但它不起作用。好了,所以这是我的代码:

import java.util.*; 
   class Kid {  
      String name; 
      double height; 
      GregorianCalendar bDay; 

      public Kid () { 
         this.name = "HEAD";
         this.height = 1; 
         this.bDay = new GregorianCalendar(1111,1,1); 
      } 

      public Kid (String n, double h, String date) {
      // method that toString() can't find somehow
         StringTokenizer st = new StringTokenizer(date, "/", true);
         n = this.name;
         h = this.height;
      } 

      public String toString() { 
         return Kid(this.name, this.height, this.bDay);
      } 
   } //end class 

好的,所以我上面的toString(我知道,我的第三个参数已关闭,应该是String)已关闭。如果我在第三件事中硬编码一个值,它就会变成麻烦,并说找不到它(上面)。那么如何获取日期并将其拆分呢?

调用此的类如下

class Driver {   
   public static void main (String[] args) {   
      Kid kid1 = new Kid("Lexie", 2.6, "11/5/2009");   
      System.out.println(kid1.toString());
   } //end main method 
} //end class  

我尝试研究多个构造函数,但这确实没有帮助。我尝试研究toString()方法,并尝试使用以前toString()创建的逻辑,但这是全新的,因此从未奏效。


阅读 728

收藏
2020-02-26

共1个答案

一尘不染

toString应该返回String

public String toString() { 
    return "Name: '" + this.name + "', Height: '" + this.height + "', Birthday: '" + this.bDay + "'";
} 

我建议你利用IDE的功能来生成该toString方法。不要手工编码。

例如,如果你只需右键单击源代码并选择Eclipse,便可以这样做。 Source > Generate toString

2020-02-26