以下はコードスニペットです。
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);
aSCII値1で文字を表示します(先頭文字のchar、これは印刷できません)。
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)
を使用できます。
私の答えはjh314の答えに似ていますが、もう少し詳しく説明します。
この場合にあなたがすべきことは次のとおりです。
int a = 1;
char b = (char)(a + '0');
System.out.println(b);
文字は実際にはASCIIの値で表されるため、ここでは '0'を使用しました。 '0'は文字で、48の値で表されます。
(a + '0')
と入力し、これらを足し合わせるために、Javaは '0'をそのASCIIの値(48、aは1)に変換したため、合計は49になりました。
(char)(49)
int
をchar
にキャストしました。 49のASCIIは、 '1'です。この方法で任意の数字をcharに変換でき、.toString()
メソッドを使用してから.charAt()
メソッドで数字を減算するよりもスマートで優れた方法です。
Character.forDigit
メソッドを探しているようです。
final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'
Charからintに変換できるメソッドもあります。
int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'
RADIX
を変更することで、16進数(基数16)と36までの任意の基数(またはCharacter.MAX_RADIX
とも呼ばれます)をサポートすることができます。
int a = 1;
char b = (char) a;
System.out.println(b);
こんにちは、私は同じ問題を経験しましたが、私がしたのは次のコードでした。
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
これであなたはchar型としてdecimal値を取得します。そのStringへの唯一の値は 'a'であり、そのStringへの 'a'の位置は0から始まるので、私はインデックス0でcharAt()を使用しました。
私の英語がうまく説明されていない場合は申し訳ありませんが、お役に立てば幸いです。
int a = 1;
char b = (char) (a + 48);
ASCIIでは、すべての文字に独自の番号があります。そして、char '0'は10進数で48、 '1'は49です。もしそうなら
char b = '2';
int a = b = 50;
プリミティブではなくクラス型について話している場合は、次のトリックを実行する必要があります。
Integer someInt;
Character someChar;
someChar = (char)Integer.parseInt(String.valueOf(someInt);
ここで本当の「質問」に答えた人は誰もいません。あなたはintをcharに正しく変換していません。 ASCIIテーブルでは、01の10進値は「見出しの始まり」、つまり非印刷文字です。 ASCIIテーブルを調べて、int値を33から7Eの間に変換してみてください。それはあなたに見るべきキャラクターを与えるでしょう。
aSCIIコードに基づいてASCII文字を印刷し、それを超えたくない場合(Unicode文字のように)、変数をバイトとして定義してから(char)変換を使用できます。すなわち:
public static void main(String[] args) {
byte b = 65;
for (byte i=b; i<=b+25; i++) {
System.out.print((char)i + ", ");
}
ところで、文字 'A'のASCIIコードは65です
完全な変換コンセプトについては、次のプログラムをご覧ください
class typetest{
public static void main(String args[]){
byte a=1,b=2;
char c=1,d='b';
short e=3,f=4;
int g=5,h=6;
float i;
double k=10.34,l=12.45;
System.out.println("value of char variable c="+c);
// if we assign an integer value in char cariable it's possible as above
// but it's not possible to assign int value from an int variable in char variable
// (d=g assignment gives error as incompatible type conversion)
g=b;
System.out.println("char to int conversion is possible");
k=g;
System.out.println("int to double conversion is possible");
i=h;
System.out.println("int to float is possible and value of i = "+i);
l=i;
System.out.println("float to double is possible");
}
}
希望、それは少なくとも何かを助ける
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);
これはあなたのシステムのエンコーディングが何であれ、うまくいくでしょうし、そして複数桁の数に対してもうまくいくでしょう。
整数値がアルファベット/文字のASCII値であることを確認してください。
そうでない場合はそれを作ります。
for e.g. if int i=1
それに64を足して65 = ASCII value of 'A'になる
char x = (char)i;
print x
// 'A' will be printed
Charにキャスト整数を入力するたびに、それはそのint型のASCII値を返します(理解を深めるために一度ASCIIテーブルを通過します)。
int a=68;
char b=(char)a;
System.out.println(b);//it will return ascii value of 68
//output- D