Aşağıda bir kod parçacığı bulunmaktadır,
int a = 1;
char b = (char) a;
System.out.println(b);
Ancak elde ettiğim çıktı boş.
int a = '1';
char b = (char) a;
System.out.println(b);
Çıktı olarak 1 alacağım.
Biri bunu açıklayabilir mi? Ve ilk kod parçasında olduğu gibi bir int'i char'a dönüştürmek istersem ne yapmalıyım?
int a = 1;
char b = (char) a;
System.out.println(b);
ascii değeri 1 olan karakteri yazdıracaktır (yazdırılamayan başlık başlangıcı karakteri).
int a = '1';
char b = (char) a;
System.out.println(b);
ascii değeri 49 olan karakteri yazdıracaktır ('1''e karşılık gelen)
Bir rakamı (0-9) dönüştürmek istiyorsanız, ona 48 ekleyebilir ve döküm yapabilir veya Character.forDigit(a, 10);
gibi bir şey yapabilirsiniz.
Eğer bir int
değerini ascii değerine dönüştürmek istiyorsanız, örneğin Character.toChars(48)
kullanabilirsiniz.
int a = 1;
char b = (char) a;
System.out.println(b);
merhaba, ben de aynı sorunu yaşadım ama yaptığım şey aşağıdaki koddu.
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
Bununla ondalık değeri bir char türü olarak elde edersiniz. charAt() metodunu 0 indisi ile kullandım çünkü bu String'in içindeki tek değer 'a' ve bildiğiniz gibi 'a''nın String içindeki konumu 0'dan başlıyor.
İngilizcem iyi açıklanmadıysa özür dilerim, umarım size yardımcı olur.
Java'da bir char *bir int'tir. İlk kod parçacığınız, varsayılan karakter kodlama şemasında (muhtemelen Unicode olan) 1 değerine karşılık gelen karakteri yazdırır. Unicode karakteri U+0001 yazdırılamayan bir karakterdir, bu yüzden herhangi bir çıktı göremezsiniz.
Eğer '1' karakterini yazdırmak istiyorsanız, kullandığınız kodlama şemasında '1' değerine bakabilirsiniz. Unicode'da bu değer 49'dur (ASCII ile aynıdır). Ancak bu yalnızca 0-9 rakamları için işe yarayacaktır.
Char yerine String kullanmanız ve Java'nın yerleşik toString()
yöntemini kullanmanız daha iyi olabilir:
int a = 1;
String b = toString(a);
System.out.println(b);
Bu, sistem kodlamanız ne olursa olsun çalışacak ve çok basamaklı sayılar için işe yarayacaktır.