2017-12-31 21 views
-2

以下のコードでは、出力は両方のループで同じになります。 は、charが数字の場合charの数値を返すので、0..9の場合はintという値を返します。 '0'->0他のASCIIコードの場合は、コードを返します。例:'a'->10getNumericValueを使用する場合

(例のコードのように)数字以外の文字にこのメソッドを使用することには何らかのポイントがありますか?

どのようなユースケースですか?私は他のユースケースを考えると、数字の値を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)は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( '五')'は '-1'を返すので動作しませんか? – mCs

+0

私が「Character.digit」と言うことができるのは、最初の段落で述べた0-9とA-Fの「コンピュータ」番号です。 'Character.getNumericValue'は「現実世界」の数値のため、複数の基数だけでなく複数の数値システムをサポートする必要があります。 そして私は、概念的な例として、実際にはテストしなかったと付け加えました。私はそれを削除する必要がありますね。 –

関連する問題