2

だから私はオンラインで調査してみましたが、それが私のtoString()であると感じていますが、それは他の方法では考えられないほど正しい方法です。

出力できるようにしたい: Lexie- Height: 2.6ft. 生年月日: 2009/11/5

私のコードは次のようになります:

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) { 
        StringTokenizer st = new StringTokenizer(date, "/", true);
        n = this.name;
        h = this.height;
    } 
    /**
    public String toString() { 
        return (this.name + ", Height: " + this.height + "ft., Born: "
        + this.month + "/" + this.day + "/" + this.year);
    } 
    */
    public String toString() {
        Calendar currentDate = Calendar.getInstance();
        return (this.name + ", Height: " + this.height + "ft., Born: "
        + this.bDay);
    }
} //end class 

Kid クラスの呼び出しは以下のとおりです。

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
4

3 に答える 3

6

コンストラクター内の式が間違ってn = this.nameいます。あるべき場所にありますthis.name = n。についても同様ですthis.height。また、現在bDayフィールドをまったく設定していません。したがって、すべてのフィールドは確かにnullです。

于 2012-05-29T14:58:50.630 に答える
1

これを試して:

public Kid (String n, double h, String date) { 
        StringTokenizer st = new StringTokenizer(date, "/");
        this.name = n;
        this.height = h;
        this.bDay = new GregorianCalendar(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
    }
于 2012-05-29T15:03:32.630 に答える
0

コンストラクターと bDay の型を変更してみてください。

private static final String DATE_FORMAT = "dd/MM/yyyy";
String name; 
double height; 
Date bDay; 

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

public Kid (String n, double h, String date) { 
    DateFormat df = new SimpleDateFormat(DATE_FORMAT);
    this.bDay = df.parse(date);
    this.name = n;
    this.height = h;
} 

public String toString() {
    DateFormat df = new SimpleDateFormat(DATE_FORMAT);
    return (this.name + ", Height: " + this.height + "ft., Born: "
    + df.format(this.bDay));
}
于 2012-05-29T15:03:17.807 に答える