2017-01-31 4 views
-4

年齢を計算するメソッドがあります。 calculateAge(User user)String.split( " - ")not working

public int calculateAge(User user) { 
    String date = null, month = null, year = null; 
    String[] fields; 
    String DOB = user.getDOB(); 
    System.out.println(DOB); 
    fields = DOB.split("-"); 
    System.out.println(fields); 
    fields[0] = date; 
    fields[1] = month; 
    fields[2] = year; 
    System.out.println(date); 
    System.out.println(month); 
    System.out.println(year); 
    LocalDate birthDate = LocalDate.of(Integer.parseInt(year), Integer.parseInt(month), Integer.parseInt(date)); 
    LocalDate now = LocalDate.now(); 
    Period age = Period.between(birthDate, now); 
    return age.getYears(); 
} 

プリントがラインをデバッグしている、そして今のように、これは、彼らが印刷するものである:

DOBが1988年1月1日ですが、フィールドは[Ljava.lang です。文字列; @ 6d41a4aフィールドの配列を表示する代わりに。したがって、日付、月、年はnullと表示され、Integer.parseInt(null)にはなりません。したがって、NumberFormatException: nullとなります。

+0

べきであると思います。値がnullの理由は、フィールドを印刷しようとした後、3行ですべてnullに設定されているためです。 –

+1

'fields'は配列であり、' ArrayList'ではありません。そして、 'date'、' month'、 'year'はあなたが割り当てた値なので' null'です。おそらく、 'date = fields [0];'などを意味するでしょう。 –

答えて

3

この出力は、Javaの標準的な印刷方法です。

あなたの割り当ては間違った方向にあると思います。

私はそれはフィールドが、あなたがそれを自分で行う必要があり、リストを印刷したい場合は、フォーマットされた日付を含むメモリ内のアドレスであるためです

date = fields[0] 
months = fields[1] 
year = fields[2]