Çoğu zaman, kullanıcıların klavyeden girdiği sembolik bilgilerin sayılara dönüştürülmesi veya bir programcının bu bilgilerden sayılar alması gerekir. Java'da bunu yapmak için bazı yöntemler var. Bu yazıda, char'ı int değerine dönüştürmemize yardımcı olacak yöntemleri bulacağız.

Örtük Tip Döküm

Tip dökümü, bir veri tipinin değerini başka bir veri tipinin değerine dönüştürme işlemidir. Tip dökümü, tiplere bağlı olarak manuel veya otomatik olabilir. Tipler uyumlu olmalıdır. Java'da, açık ve örtük olmak üzere iki tip yazımımız vardır. Örtük, yalnızca değişkeni "daha büyük"ten "daha küçük" türe (diyelim ki int'den uzuna ) dönüştürürsek yapılabilir.). char türündeki bir değişkeni int veri türüne dönüştürmek istiyorsak, çoğu zaman eşdeğer değerini ASCII tablosundan almamız gerekir. Dijital olarak girilebilen her alfabe veya sembol, karşılık gelen benzersiz bir tam sayıya sahiptir. Örneğin, 'A' alfabesinin ASCII kodu 65'tir. Tip ataması yaparak, karakter değerini zorla eşdeğer ASCII tamsayı koduna dönüştürüyoruz. İşte tür dökümü kullanan Java char to int örneğimiz.

Java char'dan int'e örnek (typeCasting kullanılarak)


package charToInt;

public class Implicit {

       public static void main(String[] args) {
           char char1 = 'A';
           char char2 = 'a';
           int x = char1;
           int y = char2;

           System.out.println("ASCII value of '" + char1 + "' is " + x);
           System.out.println("ASCII value of '" + char2 + "' is " + y);
       }
   }
Çıktı:
'A'nın ASCII değeri 65'tir 'a'nın ASCII değeri 97'dir

Açık tip döküm

Yukarıda gördüğümüz gibi, char'dan int'e dönüştürme durumunda, char'ı depolamak için 2 bayt ve int'yi depolamak için 4 bayt kullanıldığından, bunu açıkça yapmak gerekli değildir. Yani, int türü "daha büyüktür". Bununla birlikte, bir alıştırma olarak, bir char değişkenini açıkça bir tamsayıya çevirebiliriz. Bu işlem için parantez içinde (int) ifadesini kullanırız.

package charToInt;

public class Explicit {

       public static void main(String[] args) {
           char char1 = 'A';
           System.out.println("ASCII value of '" + char1 + "' is " + (int)char1);
       }
   }
Çıktı:
'A'nın ASCII değeri 65'tir

getNumericValue() kullanma

getNumericValue(), tür atamaya benzer şekilde çalışır, ancak ASCII tablosunu izlemek yerine Unicode kodlama standardını izler. ASCII yalnızca latin harfleri (artı bazı ulusal alfabe sembolleri), sayılar, noktalama işaretleri ve kontrol karakterleri gibi belirli bir sembol ve karakter grubunu temsil edebilir. Unicode, dünyadaki her dil için harf ve sembol içeren bir milyondan fazla değer içerir. Örneğin, Unicode'da A'nın değeri \u0041'dir ve bu, 10 sayısal değerine eşittir. Karakterin sayısal değeri yoksa, yöntem -1 döndürür. Negatif olmayan tamsayıları döndürmek için bu yöntemi kullanmak uygun olabilir.

package charToInt;

public class UsingGetNumericValue {

       public static void main(String[] args) {
           char char1 = '7';
           char char2 = 'A';
           char char3 = '*';

           int x = Character.getNumericValue(char1);
           int y = Character.getNumericValue(char2);
           int z = Character.getNumericValue(char3);

           System.out.println("The Unicode value of '" + char1 + "' is " + x);
           System.out.println("The Unicode value of '" + char2 + "' is " + y);
           System.out.println("The Unicode value of '" + char3 + "' is " + z);

       }
   }
Çıktı:
'7'nin Unicode değeri 7'dir 'A'nın Unicode değeri 10'dur '*' Unicode değeri -1'dir

ParseInt()'i kullanma

ParseInt(), karakteri int'ye dönüştürmek için başka bir yöntemdir. Float, double ve long gibi diğer sayısal veri türleri arasında çapraz dönüştürme yapmak için de yaygın olarak kullanılır. ParseInt(), en az bir bağımsız değişken ve en fazla iki bağımsız değişken gerektirir. İlk bağımsız değişken, dönüştürdüğümüz değerin değişken adıdır. İkinci argüman, ondalık, sekizli, onaltılık vb. taban değerlerine atıfta bulunan sayı tabanıdır. ParseInt()' in veri türlerini sayı sistemi göz önünde bulundurarak da dönüştürme yeteneği nedeniyle, "sayısal" dönüştürmek için en uygun seçimdir. Java'da char'dan int'e. Bu yöntemi kullanmak istiyorsanız akılda tutulması gereken iki önemli nokta vardır. ayrıştırma()yöntemi yalnızca String bağımsız değişkenlerini kabul eder, bu nedenle önce char'ı String'e ( String.valueOf kullanarak ) dönüştürmelisiniz . char veri tipinde saklanan sayısal değerler dışında alfabeleri veya diğer sembolleri dönüştürmek için parseInt()'i kullanamazsınız . Sayısal olmayan değerler girerseniz bir hata alırsınız. İşte bir Java örneği:

package charToInt;

public class ParseInt {
       public static void main(String args[]){
           char ch = '7';
           int n = Integer.parseInt(String.valueOf(ch));
           System.out.println(n);
       }
   }
Çıktı:
7
parseInt ton sayısal olmayan değeri kullanmayı deneyelim:

package charToInt;

public class ParseInt {
       public static void main(String args[]){
           char ch = 'q';
           int n = Integer.parseInt(String.valueOf(ch));
           System.out.println(n);
       }
   }
Çıktı:
"main" dizisinde istisna java.lang.NumberFormatException: Giriş dizesi için: java.base/java.lang.Integer.parseInt adresinde java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) adresinde "q" (Integer.java:652) java.base/java.lang.Integer.parseInt(Integer.java:770) adresinde charToInt.ValueOf.main(ValueOf.java:6) konumunda

'0' çıkarma

Bir karakteri tamsayıya dönüştürmenin çok basit bir yolu var. Bunu yapmak için "0" karakterinin ASCII değerini karakterden çıkarmanız yeterlidir. Örneğin, "7" karakterinden int 7 almak için:

int intValue = '7'-' 0 ';
Bunun, yalnızca tamsayı karakterler için int değerleri almak için işe yaradığını unutmayın! Diyelim ki 'A'dan '0' çıkarırsanız, yöntem basitçe ASCII sıfır kodları ile A harfi arasındaki farkı döndürür. İşte bir örnek.

package charToInt;

public class SubtractingZero {

   public static void main(String[] args) {
       char char1 = '7';
       char char2 = 'A';
       char char3 = '*';

       System.out.println(char1);
       System.out.println(char1 - '0');

       System.out.println(char2);
       System.out.println(char2 - '0');

       System.out.println(char3);
       System.out.println(char3 - '0');
      
   }

}
Çıktı:
7 7 Bir 17 * -6

Sonuçlar

Java'da char'ı int'ye dönüştürmeniz gerekirse, yöntemlerden birini kullanın:
  • Örtülü tip atama //ASCII değerleri alma
  • Karakter.getNumericValue()
  • Integer.parseInt() //String.valueOf() ile çift olarak
  • '0'ı çıkarma // yalnızca tamsayı sayısal değerler için çalışır
Açık tip dökümü de yapabilirsiniz. Ancak bu gereksiz bir işlemdir: gerekli değildir, yalnızca Java'da çalışır.