2011-01-28 3 views
4

Blackberry RIM API를 사용하여 매우 간단한 작업을하고 있습니다. 형식을 지정하려는 문자열이 1000000입니다. 1,000,000.00Blackberry Java API를 사용하여 십진수를 (###, ###. ##)로 설정하십시오.

에 내가 그렇게하기 위해 두 개의 RIM API 클래스를 시도했지만, 그들 중 누구도 실제로 필요하지 않았다 :

1) javax.microedition.global.Formatter

String value = "1000000"; 
float floatValue = Float.parseFloat(value); 
Formatter f = new Formatter(); //also tried with locale specified - Formatter("en") 
String result = f.formatNumber(floatValue, 2); 

이 결과 변수 1000000.00이다 -을 소수점 구분 기호가 있지만 그룹 se가 누락되었습니다. parators (쉼표).

2) net.rim.device.api.i18n.MessageFormat

은 (

String value = "1000000"; 
Object[] objs = {value}; 
MessageFormat mfPlain = new MessageFormat("{0}"); 
MessageFormat mfWithFormat = new MessageFormat("{0,number,###,###.##}"); 
String result1 = mfPlain.format(objs); 
String result2 = mfWithFormat.format(objs); 

결과 1 자바의 표준 에디션에 java.text.MessageFormat)와 호환 주장 : (mfWithFormat 코드 주석 때이) 나에게주는 단지 일반 1000000 (예상대로하지만, 편치 않은). result2 : throws IllegalArgumentException. 나는 다음 시도하는 어떤 선택의 여지가있어이 시점에서

...

어떤 제안이?

+0

어떤 로케일을 사용하고 있습니까? 다른 로케일을 사용해 볼 수 있습니까? –

+0

Blackberry 설명서는 다음과 같이 말합니다. _이 구현은 Formatter 클래스의 현재 로캘 중간 서식 만 지원합니다. 따라서 내 예제에서는 로캘을 지정하지 않습니다. 나는 또한'en' 로케일을 사용해 보았지만 같은 결과를 얻었습니다. 시뮬레이터의 로케일은'en' 또는'en-US'이어야합니다. –

+0

Blackberry API 설명서에서도 다음과 같이 설명합니다. ... (이 클래스는 문자열, 날짜 및 시간 요소 형식을 지원합니다). 따라서 숫자 형식을 지원하지 않습니다. – Richard

답변

0

이렇게하려면 자신 만의 함수를 작성해야합니다.

-1

을이 자신의 기능을 만들 필요없이 작동 : 자바 :

String value = "1000000"; 

MessageFormat msgFormat = new MessageFormat("{0,number,###,###.00}"); 
String s = msgFormat.format(new Object[]{Integer.valueOf(value)})); 

당신이 정수형 대신에, 그렇지 않으면 당신은 얻을 것이다 문자열을 전달해야합니다. lang.IllegalArgumentException : 주어진 객체를 숫자로 포맷 할 수 없습니다

+0

작동하지 않습니다. 생성자 행의 IllegalArgumentException입니다. – azdev

+0

당신이 사용하는 API에 따라 달라질 것입니다. 대부분의 Java 버젼의 java.text.MessageFormat와 동작합니다. 마이크로 판에서 테스트하지 않았습니까? – CCC

+0

질문은 J2ME가 아니라 Blackberry RIM API에 대해 질문했습니다. BlackBerry에서 테스트하지 않은 코드와 문제를 혼동하지 마십시오. RIM이 표준 API를 구현 한 경우 (이 경우에는 불완전하거나 깨진 경우가 많습니다) -이 경우처럼. –