-1

次のようなことは可能ですか

for (int i = 0; i < chararray.length; i++) {
    Character myChar = new Character (chararray[i]);

    if (myChar.getClass() == char) {
        body of method;
    }
}

i基本的に、の位置に格納されている値chararrayが特定のデータ型であるかどうかをテストしたいと考えています。A ~ Z または 1 ~ 100 の数字です。ありがとう。

4

5 に答える 5

1

文字が文字か数字かを確認するだけの場合は、次の方法で実行できます。

for (int i = 0; i < chararray.length; i++) {
    if (Character.isLetterOrDigit(chararray[i])) {
        // this character is a letter or a digit
    }
}
于 2013-09-15T06:56:31.083 に答える
0

クラスが特定のプリミティブ クラスであるかどうかをテストする場合は、この方法で行う必要があります。

Class cls = ...
if (cls == char.class) {
   ...
于 2013-09-15T06:54:33.210 に答える
0

などでプリミティブのクラスを取得できますchar.classint.class

そうは言っても、次の 2 つのことのいずれかが真実であると言えます。

  • chararrayが の場合char[]、その中のすべての要素はタイプchar(never Character) になります。Aはプリミティブchar[]のみを保持できます。char
  • がオブジェクト ( 、など) を保持する可能性のある参照型の配列である場合、プリミティブ型は参照型の配列に格納できないため、要素が になることchararrayはありませんCharacterObject[]Character[]T[]char

後者の場合、配列の型付け方法に応じて、チェックを行う必要がある場合とない場合があります。それが の場合、その中には sCharacter[]のみCharacterが存在できます (まあ、または のサブクラスであり、最終クラスであるCharacterため何もありません)。Character同様に、 の場合は sIntegerのみが含まれますInteger。の場合Objectは、任意の参照型を保持でき、リフレクション チェックを行うか、別の設計を考え出す必要があります。

ボクシングとオートボクシングは、参照型とプリミティブ型の違いを隠すことができますが、それらは実際には異なり、どちらもサブタイプではありません (または、オートボクシング/アンボックス化を除いて割り当て可能です)。

于 2013-09-15T07:03:05.113 に答える
-1

char は 2 バイトでエンコードされます。0 ~ 65535 の値を指定できます。これらの値は Unicode として解釈できます。しかし、数字がそれの Unicode 解釈である必要があるかどうかを決定するのはあなた次第です。値が何を表すかを決定するのはプログラマであるため、どのように解釈すべきかを知ることはできません。必要のないことをしたい。が表すものを自分で選択できますchar

http://docs.oracle.com/javase/tutorial/i18n/text/charintro.htmlを見てください。

chがタイプであると仮定しcharます。Unicode の解釈が実際に Letter であるかどうかを調べたい場合は、次のように使用できます。Character.isLetter(ch)

それが数字であるかどうかを確認したい場合は、次のように使用します。 Character.isDigit(ch)

于 2013-09-15T06:56:24.520 に答える
-1

.instanceOf() メソッドを使用してオブジェクト タイプを確認することもできます。

于 2013-09-15T06:57:47.517 に答える