2016-10-13 6 views
0

リストが文字列配列に変換されています。配列のインデックス0では、文字列"Select a value"が割り当てられています。今度はString配列を反復処理するとき、最初の要素は "値を選択"として割り当てた値でオーバーライドされます。以下は 最初の要素はjava.util.Listでオーバーライドされます

はコードです:

List<LocalDate> localDatesList = new ArrayList<LocalDate>(); 
localDatesList.add(new LocalDate()); 
localDatesList.add(new LocalDate().plusDays(1)); 
localDatesList.add(new LocalDate().plusDays(2)); 
localDatesList.add(new LocalDate().plusMonths(1)); 
localDatesList.add(new LocalDate().plusMonths(2)); 
List<String> tempDatesList = new ArrayList(localDatesList.size()); 
for (LocalDate date : localDatesList) { 
    tempDatesList.add(date.toString()); 
} 
String[] formattedDates = tempDatesList.toArray(new String[localDatesList.size()]); 
formattedDates[0]="Select a value"; 
for (String dates : formattedDates) { 
    System.out.println(dates); 
} 

出力:私は1サイズを大きくしようとしたが、nullは最後のインデックスに追加され、それが現在の日付が表示されないです

2016-10-14 
2016-10-15 
2016-11-13 
2016-12-13 

(私がリストに追加した最初の要素)。

私が紛失していることをお勧めします。インデックス0またはリストの最初の要素に値"Select a Value"を追加するにはどうすればよいですか。 formattedDates[0]="Select a value"を追加したときに最初の要素がリストにありません。あなたはこの行のこぶしの要素を上書きしている

+0

このコードを実行すると、まず「値を選択」が表示されます。リストに* 5 *要素があり、出力に* 4 *だけしか表示されていない場合、何らかの理由で出力の最初の行が表示されないということが強く疑われます。あなたが作成したコードをコンソールアプリに入れて、自分が何をしているのか確かめてください。さて、「間違った」価値観はどうですか?それは実際にコンソールアプリケーション、または他のどこですか? –

+0

なぜ 'tempDatesList'が必要ですか? – Jerry06

答えて

2

formattedDates [0] = "値を選択します"。

変更これとあなたのループの前に「選択した値を」追加のようなあなたのコード:

List<LocalDate> localDatesList = new ArrayList<LocalDate>(); 
localDatesList.add(new LocalDate()); 
localDatesList.add(new LocalDate().plusDays(1)); 
localDatesList.add(new LocalDate().plusDays(2)); 
localDatesList.add(new LocalDate().plusMonths(1)); 
localDatesList.add(new LocalDate().plusMonths(2)); 

List<String> tempDatesList = new ArrayList(localDatesList.size()); 
tempDatesList.add("Select a value"); 
for (LocalDate date : localDatesList) { 
    tempDatesList.add(date.toString()); 
} 

String[] formattedDates = tempDatesList.toArray(new String[localDatesList.size()]); 
for (String dates : formattedDates) { 
    System.out.println(dates); 
} 
0

あなたはあなた自身のことで、最初の要素をオーバーライドしています。配列のサイズを増やすことはできません。その値で更新される特定の位置に割り当てるものは何でも構いません。変更すると、その特定の位置で変更されます。

コードで0ポジションに値(formattedDates[0]="Select a value";)を割り当ててください。

リストを配列に変更する前に、リストに"Select a value"を追加してから変換してください。それで問題ありません。

tempDatesList.add("Select a value");

そして、ここで

for (LocalDate date : localDatesList) { 
    tempDatesList.add(date.toString()); 
} 

、その後

tempDatesList.toArray(new String[localDatesList.size()]); 

日付を追加する洗練されたコードです:私はあなたのためのコードを変更した

List<String> localDatesList = new ArrayList<String>(); 
localDatesList.add(LocalDate.now().toString()); 
localDatesList.add(LocalDate.now().plusDays(1).toString()); 
localDatesList.add(LocalDate.now().plusDays(2).toString()); 
localDatesList.add(LocalDate.now().plusMonths(1).toString()); 
localDatesList.add(LocalDate.now().plusMonths(2).toString()); 
localDatesList.add("Select a value"); 
String[] formattedDates = localDatesList.toArray(new String[localDatesList.size()]); 
for (String dates : formattedDates) { 
    System.out.println(dates); 
} 
-1

public static void main(final String arhgsp[]) { 
    final List<LocalDate> localDatesList = new ArrayList<>(); 
    localDatesList.add(LocalDate.now()); 
    localDatesList.add(LocalDate.now().plusDays(1)); 
    localDatesList.add(LocalDate.now().plusDays(2)); 
    localDatesList.add(LocalDate.now().plusMonths(1)); 
    localDatesList.add(LocalDate.now().plusMonths(2)); 
    final List<String> tempDatesList = new ArrayList<>(localDatesList.size()); 
    for (final LocalDate date : localDatesList) { 
     tempDatesList.add(date.toString()); 
    } 
    final String[] formattedDates = tempDatesList.toArray(new String[localDatesList.size()]); 
    formattedDates[0] = "Select a value"; 
    for (final String dates : formattedDates) { 
     System.out.println(dates); 
    } 
} 

は出力

Select a value 
2016-10-14 
2016-10-15 
2016-11-13 
2016-12-13 

を生産し、これはあなたのために働くだろうと思います。

0

値を入力すると、配列の最初の値が変更されます。

String[] formattedDates = new String[localDatesList.size() + 1]; 
formattedDates[0]="Select a value"; 
System.arraycopy(tempDatesList.toArray(), 0, formattedDates, 1, tempDatesList.toArray().length); 
関連する問題