1. ホーム
  2. java

[解決済み] JavaでtoString()を正しくオーバーライドする方法は?

2022-03-06 13:05:58

質問

少し馬鹿みたいですが、私の toString() メソッドで、非常に苛立たしいです。 というのも、ネットで調べてみたのですが toString は、Kidコンストラクタがあるにもかかわらず、"Not finding Kid constructor #2"とエラーになり、他のことをやってもうまくいきません。 OK、それはたくさんだったので、ここで私のコードです。

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 

OK 上記の私のtoString(3番目のパラメータがずれている、Stringであるべき)がずれているのですね。もし、3つ目のパラメータに値をハードコードしたら、おかしくなって、これ(上の方)が見つからないと言うんだ。だから私はどのように日付を取得し、それを分割することができますか?

これを呼び出すクラスは以下の通りです。

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() のロジックを作成したのですが、これは新しいものなので、うまくいきませんでした。

助けてください。

解決するには?

その toString を返すことになっています。 String .

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

IDE の機能を利用して toString メソッドを使用します。ハンドコーディングはしないでください。

例えば、Eclipseでは、ソースコード上で右クリックするだけで、そのようなことが可能です。 Source > Generate toString