CodeGym /Blog Java /Random-PL /Java Konwertuj Char na Int z przykładami
Autor
Oleksandr Miadelets
Head of Developers Team at CodeGym

Java Konwertuj Char na Int z przykładami

Opublikowano w grupie Random-PL
Dość często informacje symboliczne, które użytkownicy wprowadzają z klawiatury, muszą zostać przekonwertowane na liczby lub programista powinien uzyskać z nich liczby. Istnieje kilka metod w Javie, aby to zrobić. W tym artykule poznamy metody, które pomogą nam przekonwertować znak na wartość typu int.

Niejawne rzutowanie typów

Rzutowanie typu to proces konwersji wartości jednego typu danych na wartość innego typu danych. Odlewanie typów może być ręczne lub automatyczne, w zależności od typów. Typy powinny być kompatybilne. W Javie mamy dwa typy rzutowania typów, jawne i niejawne. Niejawne można zrobić tylko wtedy, gdy przekonwertujemy zmienną z typu „większy” na „mniejszy” (powiedzmy z int na long). Jeśli chcemy zamienić zmienną typu char na typ danych int, najczęściej musimy pobrać jej odpowiednik z tablicy ASCII. Każdy alfabet lub symbol, który można wprowadzić cyfrowo, ma odpowiadającą mu unikalną liczbę całkowitą. Na przykład alfabet „A” ma kod ASCII równy 65. Poprzez rzutowanie typu wymuszamy konwersję wartości znaku na odpowiadający jej kod całkowity ASCII. Oto nasz przykład Java char to int przy użyciu rzutowania typów.

Przykład Java char to int (przy użyciu 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);
       }
   }
Dane wyjściowe to:
Wartość ASCII „A” wynosi 65 Wartość ASCII „a” wynosi 97

Jawne rzutowanie typu

Jak widzieliśmy powyżej, w przypadku konwersji char na int nie jest konieczne robienie tego jawnie, ponieważ 2 bajty są używane do przechowywania char, a 4 bajty są używane do przechowywania int. Oznacza to, że typ int jest „większy”. Niemniej jednak, jako ćwiczenie, możemy jawnie rzutować zmienną char na liczbę całkowitą. W przypadku tej operacji wspominamy o (int) w nawiasach.

package charToInt;

public class Explicit {

       public static void main(String[] args) {
           char char1 = 'A';
           System.out.println("ASCII value of '" + char1 + "' is " + (int)char1);
       }
   }
Dane wyjściowe to:
Wartość ASCII „A” wynosi 65

Korzystanie z funkcji getNumericValue()

getNumericValue() działa podobnie do rzutowania typów, ale zamiast stosować się do tabeli ASCII, stosuje standard kodowania Unicode. ASCII może reprezentować tylko określony zestaw symboli i znaków, takich jak litery łacińskie (oraz niektóre symbole alfabetu narodowego), cyfry, znaki interpunkcyjne i kontrolne. Unicode zawiera ponad milion wartości zawierających litery i symbole dla każdego języka na świecie. Na przykład wartość A w Unicode to \u0041, co odpowiada wartości numerycznej 10. Jeśli znak nie ma wartości liczbowej, metoda zwraca -1. Użycie tej metody może być wygodne do zwracania nieujemnych liczb całkowitych.

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

       }
   }
Dane wyjściowe to:
Wartość Unicode '7' to 7 Wartość Unicode 'A' to 10 Wartość Unicode '*' to -1

Używanie ParseInt()

ParseInt() to kolejna metoda konwersji char na int. Jest również szeroko stosowany do konwersji krzyżowej między innymi numerycznymi typami danych, takimi jak liczba zmiennoprzecinkowa, podwójna i długa. ParseInt() wymaga co najmniej jednego argumentu i co najwyżej dwóch argumentów. Pierwszym argumentem jest nazwa zmiennej wartości, którą konwertujemy. Drugim argumentem jest podstawa, która odnosi się do wartości bazowej liczby dziesiętnej, ósemkowej, szesnastkowej itp. Ze względu na zdolność funkcji ParseInt() do konwersji typów danych z uwzględnieniem systemu liczbowego, jest to optymalny wybór do konwersji „liczbowych ” char na int w Javie. Istnieją dwa ważne punkty, o których należy pamiętać, jeśli chcesz skorzystać z tej metody. parseInt()metoda akceptuje tylko argumenty typu String, więc najpierw należy przekonwertować znak na ciąg (za pomocą String.valueOf ). Nie możesz użyć parseInt() do konwersji alfabetów lub innych symboli z wyjątkiem wartości liczbowych przechowywanych w typie danych char. Jeśli wprowadzisz wartości nieliczbowe, pojawi się błąd. Oto przykład Javy:

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);
       }
   }
Dane wyjściowe to:
7
Spróbujmy użyć wartości nieliczbowej 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);
       }
   }
Dane wyjściowe to:
Wyjątek w wątku „main” java.lang.NumberFormatException: Dla ciągu wejściowego: „q” w java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) w java.base/java.lang.Integer.parseInt (Integer.java:652) w java.base/java.lang.Integer.parseInt(Integer.java:770) w charToInt.ValueOf.main(ValueOf.java:6)

Odejmowanie „0”

Istnieje bardzo prosty sposób na konwersję znaku na liczbę całkowitą. Aby to zrobić, po prostu odejmij wartość ASCII znaku „0” od znaku. Na przykład, aby uzyskać int 7 ze znaku „7”:

int intValue = '7'-' 0 ';
Zauważ, że działa to w przypadku uzyskiwania wartości int wyłącznie dla znaków całkowitych! Jeśli odejmiesz „0” od, powiedzmy, „A”, metoda po prostu zwróci różnicę między kodami ASCII równymi zero i literą A. Oto przykład.

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

}
Dane wyjściowe to:
7 7 A 17 * -6

Wnioski

Jeśli chcesz przekonwertować char na int w Javie, użyj jednej z metod:
  • Niejawne rzutowanie typu // pobieranie wartości ASCII
  • Character.getNumericValue()
  • Integer.parseInt() //w parze z String.valueOf())
  • Odejmowanie „0” // działa tylko dla liczb całkowitych
Możesz także wykonać jawne rzutowanie typów. Jest to jednak operacja nadmiarowa: nie jest potrzebna, ale po prostu działa w Javie.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION