CodeGym /Java Blog /Willekeurig /Java Converteer Char naar Int met voorbeelden
John Squirrels
Niveau 41
San Francisco

Java Converteer Char naar Int met voorbeelden

Gepubliceerd in de groep Willekeurig
Vrij vaak moet symbolische informatie die gebruikers via het toetsenbord invoeren, worden omgezet in cijfers of moet een programmeur er cijfers uit halen. Er zijn enkele methoden in Java om dit te doen. In dit artikel zullen we de methoden uitzoeken waarmee we char naar int-waarde kunnen converteren.

Impliciete typecasting

Typecasting is het proces waarbij een waarde van het ene gegevenstype wordt omgezet in een waarde van een ander gegevenstype. Typecasting kan handmatig of automatisch zijn, afhankelijk van het type. De typen moeten compatibel zijn. In Java hebben we twee soorten typecasting, expliciet en impliciet. Impliciet kan alleen worden gedaan als we de variabele van het type "groter" naar "kleiner" converteren (bijvoorbeeld van int naar long). Als we een variabele van het type char naar het gegevenstype int willen converteren, moeten we meestal de equivalente waarde uit de ASCII-tabel halen. Elk alfabet of symbool dat digitaal kan worden ingevoerd, heeft een bijbehorend uniek geheel getal. Het alfabet 'A' heeft bijvoorbeeld een ASCII-code van 65. Door typecasting zetten we de tekenwaarde krachtig om in de equivalente ASCII-getalcode. Hier is ons Java char to int-voorbeeld met behulp van typecasting.

Voorbeeld van Java char naar int (met 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);
       }
   }
De uitvoer is:
ASCII-waarde van 'A' is 65 ASCII-waarde van 'a' is 97

Expliciete typecasting

Zoals we hierboven zagen, is het in het geval van conversie van char naar int niet nodig om dit expliciet te doen, aangezien 2 bytes worden gebruikt om char op te slaan en 4 bytes worden gebruikt om int op te slaan. Dat wil zeggen, het int-type is "groter". Desalniettemin kunnen we als oefening expliciet een char-variabele casten naar een geheel getal. Voor deze bewerking vermelden we (int) tussen haakjes.

package charToInt;

public class Explicit {

       public static void main(String[] args) {
           char char1 = 'A';
           System.out.println("ASCII value of '" + char1 + "' is " + (int)char1);
       }
   }
De uitvoer is:
ASCII-waarde van 'A' is 65

GetNumericValue() gebruiken

getNumericValue() werkt op dezelfde manier als typecasting, maar in plaats van de ASCII-tabel te volgen, volgt het de Unicode-coderingsstandaard. ASCII kan alleen een specifieke set symbolen en tekens vertegenwoordigen, zoals Latijnse letters (plus enkele nationale alfabetsymbolen), cijfers, interpunctie en controletekens. Unicode bevat meer dan een miljoen waarden met letters en symbolen voor elke taal ter wereld. De waarde van A in Unicode is bijvoorbeeld \u0041, wat overeenkomt met een numerieke waarde van 10. Als het teken geen numerieke waarde heeft, retourneert de methode -1. Het gebruik van deze methode kan handig zijn om niet-negatieve gehele getallen te retourneren.

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

       }
   }
De uitvoer is:
De Unicode-waarde van '7' is 7 De Unicode-waarde van 'A' is 10 De Unicode-waarde van '*' is -1

ParseInt() gebruiken

ParseInt() is een andere methode om de char naar int te converteren. Het wordt ook veel gebruikt voor kruisconversie tussen andere numerieke gegevenstypen, zoals float, double en long. ParseInt() vereist minimaal één argument en maximaal twee argumenten. Het eerste argument is de naam van de variabele van de waarde die we converteren. Het tweede argument is de radix, die verwijst naar de basiswaarde van decimaal, octaal, hexadecimaal, enz. Vanwege de mogelijkheid van ParseInt() om gegevenstypen te converteren met het getalsysteem in gedachten, is het een optimale keuze voor het converteren van "numerieke ” char naar int in Java. Er zijn twee belangrijke punten waarmee u rekening moet houden als u deze methode wilt gebruiken. ontledenInt()methode accepteert alleen String-argumenten, dus u moet eerst char naar String converteren (met behulp van String.valueOf ). U kunt parseInt() niet gebruiken om alfabetten of andere symbolen te converteren, behalve numerieke waarden die zijn opgeslagen in het gegevenstype char. Als u niet-numerieke waarden invoert, krijgt u een foutmelding. Hier is een Java-voorbeeld:

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);
       }
   }
De uitvoer is:
7
Laten we proberen parseInt ton niet-numerieke waarde te gebruiken:

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);
       }
   }
De uitvoer is:
Uitzondering in thread "main" java.lang.NumberFormatException: voor invoerreeks: "q" op java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) op java.base/java.lang.Integer.parseInt (Integer.java:652) bij java.base/java.lang.Integer.parseInt(Integer.java:770) bij charToInt.ValueOf.main(ValueOf.java:6)

'0' aftrekken

Er is een heel eenvoudige manier om een ​​teken om te zetten in een geheel getal. Om dit te doen, trekt u gewoon de ASCII-waarde van het teken "0" af van het teken. Om bijvoorbeeld int 7 te krijgen van karakter "7":

int intValue = '7'-' 0 ';
Merk op dat dit werkt voor het verkrijgen van int-waarden uitsluitend voor gehele karakters! Als u '0' aftrekt van bijvoorbeeld 'A', retourneert de methode eenvoudigweg het verschil tussen de ASCII-codes nul en de letter A. Hier is een voorbeeld.

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

}
De uitvoer is:
7 7 A 17 * -6

Conclusies

Als u char naar int in Java moet converteren, gebruikt u een van de volgende methoden:
  • Impliciete typecasting // ASCII-waarden ophalen
  • Character.getNumericValue()
  • Integer.parseInt() //in combinatie met String.valueOf())
  • Het aftrekken van '0' //werkt alleen voor gehele numerieke waarden
Je kunt ook expliciet type casten. Dit is echter een overbodige operatie: het is niet nodig, maar werkt gewoon in Java.
Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION