以下にコードの一部を紹介します。
int a = 1;
char b = (char) a;
System.out.println(b);
しかし、私が得るのは空の出力です。
int a = '1';
char b = (char) a;
System.out.println(b);
私は、出力として1を得ます。
誰かこれを説明してくれませんか?また、最初のスニペットのようにintをcharに変換したい場合はどうすればいいのでしょうか?
int a = 1;
char b = (char) a;
System.out.println(b);
と入力すると、アスキー値1の文字(印刷できない見出し開始文字)が印刷されます。
int a = '1';
char b = (char) a;
System.out.println(b);
と入力すると、アスキー値49の文字( '1'に対応する文字)が出力されます。
数字(0-9)を変換したい場合は、それに48を加えてキャストするか、Character.forDigit(a, 10);
のようにします。
intをascii値に変換したい場合は、
Character.toChars(48)`のようになります。
int a = 1;
char b = (char) a;
System.out.println(b);
hola, 私も同じ問題を経験しましたが、私が行ったのは以下のコードでした。
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
これで10進数の値をchar型で取得できます。charAt()をインデックス0で使用したのは、その文字列に含まれる唯一の値が 'a'であり、ご存知のように、その文字列の 'a'の位置は0から始まるからです。
英語での説明が不十分だったらごめんなさい、お役に立てれば幸いです。
javaでは、charは*intです。 最初のスニペットは、デフォルトの文字エンコーディング方式(おそらくUnicode)で1の値に対応する文字を出力します。 Unicodeの文字U+0001は印刷されない文字なので、何も出力されないのです。
文字 '1'を出力したい場合は、使用しているエンコーディング方式の '1'の値を調べます。 Unicodeでは、これは49です(ASCIIと同じ)。 しかし、これは0〜9の数字にしか使えません。
charではなくStringを使って、Java'の組み込みのtoString()
メソッドを使った方がいいかもしれません。
int a = 1;
String b = toString(a);
System.out.println(b);
これは、システムのエンコーディングに関係なく動作し、複数桁の数字にも対応しています。