2016-10-31 32 views
-1

配列を作成してcurrentYear + 1から15までのカレンダー[]年= {2016,2017,2018,2019、.......2031}を設定しようとしていますが、表示したい数ピッカーでこれまでのところ、私はcurrentYearを取得して1年追加することができましたが、結果をforループの配列に格納しようとすると問題に直面しています。年型のカレンダーを配列に格納する方法は?

私のコードのすべてのこれまで

Calendar cal; 
Calendar [] years = new Calendar[15]; 
public Calendar [] getYears(){ 


    cal = Calendar.getInstance(); 
    cal.get(Calendar.YEAR); 
    //cal.add(Calendar.YEAR, 1); 
    for(int i = 1; i < years.length; i ++){ 

     Calendar temp = cal.add(Calendar.YEAR, 1); 
     years [i] = temp ; 

    } 


    return years; 
} 
+0

顔? –

+0

tempを配列に取り込もうとすると "互換性のない型が必要ですjava.util.Calendarが見つかりました" –

+1

*「互換性のない型が必要です」java.util.Calendarが見つかりましたvoid * * [It明らかです...](https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#add(int、%20int))は戻り予定表を追加しますか? ...カレンダー配列を持つ理由が何年しか必要ない場合は、 – Selvin

答えて

0

まず、アレイは15年間保持している場合、それは2016から2030、ない31までになります。

第2に、array yearsのすべての場所にカルフィールドを追加すると、まったく同じObjectを指す15の参照があります。あなたがしたいことは、複製されたオブジェクトを作成し、それらを指し示すことです。これはclone()メソッドで行うことができます。

だから、のようなものにする方法を変更してみてください:

public Calendar[] getYears() { 
    cal = Calendar.getInstance(); 
    for (int index = 0; index < years.length;) { 
     years[index++] = (Calendar) cal.clone(); 
     cal.add(Calendar.YEAR, 1); 
    } 
    return years; 
} 

しかし、あなたが望むすべてが長年蓄積している場合、私のようなものにあなたのコードを変更することをお勧めします:あなたはどのような問題

Calendar cal; 
int[] years = new int[15]; 

public int[] getYears() { 
    cal = Calendar.getInstance(); 
    int year = cal.get(Calendar.YEAR); 
    for (int index = 0; index < years.length;) { 
     years[index++] = year + index; 
    } 
    return years; 
} 
+0

ご協力ありがとうございます。アレイの結果を印刷または記録するにはどうすればよいでしょうか? –

+0

@khalidalqahtani配列の文字列バージョンを返すメソッドを作成します。つまり、public String toString(){StringBuilder string = new StringBuilder(); for(int year:years){string.append(year + "、");} return string.toString();} ' –

関連する問題