以下はコードスニペットです。
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);
しかし、私が得るのは空の出力です。
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の文字(見出しの先頭の文字。これは印刷できません)を出力します。
int a = '1';
char b = (char) a;
System.out.println(b);
ascii値49( '1'に対応する値)の文字を出力します
数字(0-9)を変換したい場合は、48を追加してキャストするか、のようにしCharacter.forDigit(a, 10);
ます。
int
as in ascii値を変換する場合はCharacter.toChars(48)
、たとえば、を使用できます。
System.out.println('b'+3);
b3
代わり101
にprintlnを使用してどのように取得できますか?代わりにprintfの他の方法?
Character.toChars
ASCII値ではなく、Unicodeコードポイントで動作します。intをcharにキャストしただけでも同じです(BMPの場合のみ)。
私の答えはjh314の答えに似ていますが、もう少し詳しく説明します。
この場合にすべきことは次のとおりです。
int a = 1;
char b = (char)(a + '0');
System.out.println(b);
文字は実際にはASCII値で表されるため、ここでは「0」を使用しました。「0」は文字であり、値48で表されます。
入力(a + '0')
し、これらを合計するために、Javaは '0'を48であるASCII値に変換し、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
。
65
出力して、出力しA
ますか?ここで私の答えは、この質問の要件に対して期待される動作を出力するためです。ideone.com/09LAFRを
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);
これにより、10進数値がchar型として取得されます。文字列への唯一の値は 'a'であり、ご存知のように、その文字列への 'a'の位置は0から始まるため、インデックス0でcharAt()を使用しました。
私の英語がうまく説明されていない場合は申し訳ありませんが、それがあなたを助けることを願っています。
キャスト整数をcharに入力すると、そのintのASCII値が返されます(理解を深めるために、ASCIIテーブルを確認してください)。
int a=68;
char b=(char)a;
System.out.println(b);//it will return ascii value of 68
//output- D
char
はUTF-16コード単位です。UTF-16コード単位としての68は、UnicodeコードポイントU + 0044を表すために必要な唯一のコード単位です。System.outは、テキストのエンコードをデフォルトのエンコードに変更します(おそらく、プログラムが実行されている端末/コンソールに一致します)。printlnはcharを受け取り、それをエンコードしようとします。charは完全なコードポイントであるため、試すことができます。U + 0044はほとんどすべての文字セットの文字であるため、文字化けしないターミナルへの到達に成功するはずです。ASCIIとは関係ありません。
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);
これは、システムエンコーディングが何であっても機能し、複数桁の番号でも機能します。
プリミティブではなくクラスタイプについて話している場合は、次のトリックを実行する必要があります。
Integer someInt;
Character someChar;
someChar = (char)Integer.parseInt(String.valueOf(someInt));
完全な変換の概念については、次のプログラムをご覧ください
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");
}
}
希望、それは少なくとも何かを助けるでしょう
文字を対応する整数に変換したい場合は、次のようにします。
int a = (int) 'a';
char b = (char) a;
System.out.println(b);
これは、ASCIIで正常に印刷できない項目があるために発生します。
たとえば、97〜122の数字は、小文字のa〜zに対応する整数です。
public class String_Store_In_Array
{
public static void main(String[] args)
{
System.out.println(" Q.37 Can you store string in array of integers. Try it.");
String str="I am Akash";
int arr[]=new int[str.length()];
char chArr[]=str.toCharArray();
char ch;
for(int i=0;i<str.length();i++)
{
arr[i]=chArr[i];
}
System.out.println("\nI have stored it in array by using ASCII value");
for(int i=0;i<arr.length;i++)
{
System.out.print(" "+arr[i]);
}
System.out.println("\nI have stored it in array by using ASCII value to original content");
for(int i=0;i<arr.length;i++)
{
ch=(char)arr[i];
System.out.print(" "+ch);
}
}
}
b = (char)('0' + a)
だけのために0 <= a <= 9
。