お世話になっております。JAVAに関しての質問です。


ラッパークラスCharacterのクラスメソッドisDisit/isLetter
に関して、これらはどういった引数が入れば(どういった状況なら)
isDisitでtrue、isLetterでfalseを返すようになるのでしょうか?
単純に、
char c1 = 65;
System.out.println(Character.isDigit(c1));
System.out.println(Character.isLetter(c1));
としても
false
true
が返ってきます。

ご存知の方がおりましたら
ご教授下さいますようお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/01/04 02:54:20
  • 終了:--

回答(3件)

id:cynix No.1

cynix回答回数29ベストアンサー獲得回数02006/01/04 03:24:26

ポイント20pt

http://ja.wikipedia.org/wiki/American_Standard_Code_for_Informat...

American Standard Code for Information Interchange - Wikipedia

数字のASCII (’0’~’9’ = 48~57) を入ればそうなるんでしょう。


char c1 = 48;


とか。

id:mimio17

返答が遅れてしまい、申し訳ありません。

isDisit/isLetterともに確認できました!

数字のアスキーコードによるのですね。

ありがとうございました。

2006/01/09 23:07:52
id:kurita0 No.2

kurita0回答回数3ベストアンサー獲得回数02006/01/04 16:01:26

ポイント20pt

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Characte...(char):detail]

isDigit()は文字としてみたときに数字である場合にtrueを返します

例えばchar c1=48(=’0’)の場合はisDigit()でtrue,isLetter()でfalseとなります


char c;

c = 48; // = ’¥u0030’ = ’0’

System.out.println(Character.isDigit(c)); // true

System.out.println(Character.isLetter(c)); // false

System.out.println(Character.isDigit(’0’)); // true

System.out.println(Character.isLetter(’0’)); // false


c = 65; // = ’A’

System.out.println(Character.isDigit(c)); // false

System.out.println(Character.isLetter(c)); // true

System.out.println(Character.isDigit(’A’)); // false

System.out.println(Character.isLetter(’A’)); // true


// 0(全角数字)

System.out.println(Character.isDigit(’0’)); // true

System.out.println(Character.isLetter(’0’)); // false

id:mimio17

返答が遅くなってしまい、申し訳ありません。

アスキーコードの数字に対応することが確認

できました。ありがとうございました。

2006/01/09 23:10:29
id:naoya2k No.3

naoya2k回答回数20ベストアンサー獲得回数32006/01/08 02:50:30

ポイント20pt

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Character....

Character (Java 2 $B%W%i%C%H%U%)!<%`(J SE v1.4.0)

isDigit(char ch)は、chで指定された文字が数字のときにtrueが返ります。

isLetter(char ch)は、chで指定された文字がアルファベットなときにtrueが返ります。

数字はアルファベットじゃないので、数字をあらわすUnicodeを入れてやれば、isDigitがtrueでisLetterがfalseになります。

具体的には48~57が文字’0’~文字’9’に対応するUnicodeなので、そのあたりです。

もう少し詳細には、このURLにあるテキストファイル中のDecimal Digitって書かれている表にある数がそれにあたります。

http://www.kanzaki.com/bmac/9606.html

PC Break (3) - �������Đ����ł����H

もし「文字コード」という概念を理解できていないのであれば上記のサイトが参考になると思います。


また単純にisDigit(ch)==trueかつisLetter(ch)==falseとなるchを求めたいのであれば、下記のJavaプログラムを実行すればOKです。

public class Test {

 public static void main(String args[]) {

  for (char i = 0; i < 0xffff; i++) {

   if (!Character.isLetter(i) &&

    Character.isDigit(i)) {

    System.out.println(Integer.toString(i));

   }

  }

 }

}

id:mimio17

返答が遅くなってしまい、申し訳ありません。

アスキーコード(Unicodeでも)の数字に対応することが確認できました。

ありがとうございました。

2006/01/09 23:13:31

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません