CodeGym /Java блог /Случаен /Java конвертира Char в Int с примери
John Squirrels
Ниво
San Francisco

Java конвертира Char в Int с примери

Публикувано в групата
Доста често символичната информация, която потребителите въвеждат от клавиатурата, трябва да бъде преобразувана в числа or програмистът трябва да получи числа от нея. В Java има някои методи за това. В тази статия ще разберем методите, които да ни помогнат да конвертираме char в int стойност.

Имплицитен тип кастинг

Преобразуването на типове е процес на преобразуване на стойност от един тип данни в стойност от друг тип данни. Преобразуването на типове може да бъде ръчно or автоматично в зависимост от типовете. Типовете трябва да са съвместими. В Java имаме два вида преобразуване на типове, явно и имплицитно. Имплицитно може да се направи само ако преобразуваме променливата от тип "по-голям" в "по-малък" (да речем от int в long). Ако искаме да конвертираме променлива от тип char в тип данни int, най-често трябва да получим нейната еквивалентна стойност от ASCII tableта. Всяка азбука or символ, който може да бъде въведен цифрово, има съответен уникален цяло число. Например азбуката „A“ има ASCII code 65. Чрез преобразуване на типа ние принудително преобразуваме стойността на знака в нейния еквивалентен ASCII целочислен code. Ето нашия пример от Java char към int, използвайки преобразуване на типове.

Пример от Java char към int (с помощта на typeCasting)


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);
       }
   }
Резултатът е:
ASCII стойността на „A“ е 65 ASCII стойността на „a“ е 97

Изрично кастинг на типове

Както видяхме по-горе, в случай на преобразуване на char към int, не е необходимо това да се прави изрично, тъй като 2 byteа се използват за съхраняване на char, а 4 byteа се използват за съхраняване на int. Тоест типът int е "по-голям". Въпреки това, като упражнение, можем изрично да преобразуваме променлива char към цяло число. За тази операция споменаваме (int) в скоби.

package charToInt;

public class Explicit {

       public static void main(String[] args) {
           char char1 = 'A';
           System.out.println("ASCII value of '" + char1 + "' is " + (int)char1);
       }
   }
Резултатът е:
ASCII стойността на „A“ е 65

Използване на getNumericValue()

getNumericValue() работи подобно на преобразуването на типове, но instead of да следва ASCII tableта, следва стандарта за codeиране Unicode. ASCII може да представлява само определен набор от символи и знаци като латински букви (плюс някои символи от националната азбука), цифри, препинателни знаци и контролни знаци. Unicode съдържа над мorон стойности, съдържащи букви и символи за всеки език в света. Например стойността на A в Unicode е \u0041, което е еквивалентно на числова стойност 10. Ако знакът няма числова стойност, методът връща -1. Използването на този метод може да бъде удобно за връщане на неотрицателни цели числа.

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);

       }
   }
Резултатът е:
Unicode стойността на '7' е 7 Unicode стойността на 'A' е 10 Unicode стойността на '*' е -1

Използване на ParseInt()

ParseInt() е друг метод за преобразуване на char в int. Също така се използва широко за кръстосано преобразуване между други цифрови типове данни, като float, double и long. ParseInt() изисква поне един аргумент и най-много два аргумента. Първият аргумент е името на променливата на стойността, която преобразуваме. Вторият аргумент е основата, която се отнася до базовата стойност на десетичната, осмичната, шестнадесетичната и т.н. Поради способността на ParseInt() да преобразува типове данни с оглед на числовата система, това е оптимален избор за преобразуване на „числови ” char към int в Java. Има два важни момента, които трябва да имате предвид, ако искате да използвате този метод. parseInt()приема само аргументи String, така че първо трябва да конвертирате char в String (използвайки String.valueOf ). Не можете да използвате parseInt() за преобразуване на букви or други символи, освен числови стойности, съхранени в типа данни char. Ако въведете нечислови стойности, ще получите грешка. Ето пример за Java:

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);
       }
   }
Резултатът е:
7
Нека се опитаме да използваме parseInt ton нечислова стойност:

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);
       }
   }
Резултатът е:
Изключение в нишката "main" java.lang.NumberFormatException: За входен низ: "q" в java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) в java.base/java.lang.Integer.parseInt (Integer.java:652) в java.base/java.lang.Integer.parseInt(Integer.java:770) в charToInt.ValueOf.main(ValueOf.java:6)

Изваждане на "0"

Има много прост начин за преобразуване на знак в цяло число. За да направите това, просто извадете ASCII стойността на знака "0" от знака. Например, за да получите int 7 от знака "7":

int intValue = '7'-' 0 ';
Имайте предвид, че това работи за получаване на int стойности изключително за цели числа! Ако извадите '0' от, да речем, 'A', методът просто ще върне разликата между ASCII codeовете нула и буквата A. Ето един пример.

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');
      
   }

}
Резултатът е:
7 7 A 17 * -6

Изводи

Ако трябва да конвертирате char в int в Java, използвайте един от методите:
  • Неявно преобразуване на тип //получаване на ASCII стойности
  • Character.getNumericValue()
  • Integer.parseInt() //в двойка с String.valueOf())
  • Изваждането на '0' //работи само за цели числови стойности
Можете също да направите изрично преобразуване на типове. Това обаче е излишна операция: не е необходима, а просто работи в Java.
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION