2017-12-31 145 views
-2

아래 코드에서 출력은 두 루프에서 동일합니다. 실제로 getNumericValuechar이 숫자 인 경우 char의 숫자 값을 반환하므로 0..9이면 int 값을 반환합니다. '0'->0 다른 ASCII 코드의 경우 코드를 반환합니다 (예 : 'a'->10).getNumericValue를 사용하는 경우

(예제 코드에서와 같이) 숫자 이외의 문자에이 방법을 사용하면 어떤 점이 있습니까?

유스 케이스? 필자는 숫자 값 형식 char을 얻는 다른 사용 사례를 생각할 수 없습니다.

char ch; 
    int i =1; 
    for( ch = 'a'; ch <= 'z' ; i++, ch++) 
     System.out.println(ch+" "+i); 
    i=1; 
    for(int j=Character.getNumericValue('a'); j<= Character.getNumericValue('z'); j++,i++ ) 
     System.out.println(i+ " "+j); 

EDIT 만 비 단순 예에서는, 예를 들면, 캐릭터 '\ u216C'50

+0

"어떤 점이 있습니까?"라는 말의 의미는 분명하지 않습니다. 문서화 된 동작이 필요한 경우이 메서드를 사용해야합니다. 그렇지 않으면 사용하지 마십시오. –

+0

아니면, * (당신이 생각하고있는 다른 방법) *와 대조적으로 사용하는 것이 요점입니까? –

+0

@AndyTurner 숫자에 대해'chars'와'Character.digit'에 대해 단항 숫자 승격을 사용할 수 있다면이 방법의 요점을 궁금해하고 있습니다. – mCs

답변

1

Character.getNumericValue의 값 (로마 숫자 오십) 반환하는 int는 수 염기 이상을 지원하도록 설계 예를 들어, 16 진수에서 A부터 F까지의 문자는 10에서 15까지를 나타내는 숫자입니다. Character.getNumericValue은이 개념을 z까지 확장합니다. A는 10, B는 11, C는 12, ..., Z는 35 (대소 문자를 구별하지 않음). 따라서 숫자 글자에 사용할 수 있습니다. 제가 문서에서 알 수있는 한, 다른 번호 시스템을 지원하기 때문에 언급 한 로마 숫자를 사용할 수 있습니다.

요점은 무엇인지 잘 국제화가 즉시 생각 나게합니다. 아라비아 숫자 만이 유일한 번호 체계가 아니며 UTF-16 문자 집합과 Character.getNumericValue이라는 메서드가있는 경우 영어 번호 매기기 시스템에만 국한되지 않아야합니다.

+0

'Character.digit'과의 차이점은 무엇입니까? EDIT'Character.getNumericValue ('five')''-1'을 리턴하므로 작동하지 않습니까? – mCs

+0

내가 말할 수있는 것은'Character.digit'은 첫 번째 단락에서 언급 한 0-9와 A-F와 같은 "컴퓨터"번호입니다. 'Character.getNumericValue'는 "실제"숫자를위한 것입니다. 따라서 다중베이스뿐만 아니라 다중 숫자 시스템을 지원할 필요가 있습니다. 그리고 저는 개념적 예제로서 실제로 테스트하지 않았다고 덧붙였습니다. 나는 그것을 제거해야한다고 생각합니다. –