2014-04-09 6 views
0

이 내용은 link이며, 내가 뭘 잘못하고 있는지 알 수 없습니다. MessageFormat을 사용하여 파일에서 속성을 가져오고 전달 된 정수가 1 이상인지 여부에 따라 속성을 동적으로 만들고 싶습니다. 파일의 속성은 다음과 같습니다등록 정보 파일의 메시지 형식 선택

코드에서
Prop1=Invalid password entered. You have {0,number,integer} {0,choice,1#attempt|1<attempts} remaining. 

, 나는이 속성을 읽은 다음 (나는 모든 속성에 걸쳐 일관성을 위해 배열을 전달이 경우 MessageFormat.format() 인수의 배열을 전달. 유일한 개체는 정수 값의 문자열 표현입니다. 코드를 디버깅하는 동안이 문자열은 읽히지 만, MessageFormat.format()은 예상대로 문자열의 서식을 지정하지 않는 것으로 보입니다. 결과는 다음과 같습니다.

"Invalid password entered. You have {0,number,integer} {0,choice, 1#attempt|1<attempts} remaining." 

아무도 내가 뭘 잘못하고 있다고 말할 수 있습니까? 앞에서 설명한 것처럼 정수 값의 문자열 표현을 전달하지만 위 코드를 처리 할 수 ​​있다고 가정했습니다. 내 이해에 착각 한거야?

답변

2

다음 스 니펫으로 문제를 해결할 수 있기를 바랍니다.

String msg = "Invalid password entered. You have {0,number,integer} {0,choice, 1#attempt|1<attempts} remaining."; 
int attemptCount = 1; 
System.out.println(MessageFormat.format(msg, attemptCount, attemptCount)); 

결과가,

잘못된 암호를 입력했습니다. 시도가 1 번 남았습니다.

+0

감사합니다. 왜 내가 이것을 시도하지 않았는지 확실하지 않지만, 이것은 올바른 길로 날 데려다 준다. 문자열 표현 인 경우 메시지 형식이 숫자로 구문 분석하지 않습니다. 내가 전달한 것을 Object 배열로 변경해야했습니다. –