2016-10-13 2 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"을 추가 한 다음 변환하십시오. 그러면 정상적으로 작동합니다.

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

내가 당신을 위해 코드를 수정했습니다 :

tempDatesList.add("Select a value");

다음 날짜

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

다음

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

가 여기에 세련된 코드가 추가합니다.

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); 
관련 문제