Converteer int naar char in java

Hieronder staat een codefragment,

int a = 1;
char b = (char) a;
System.out.println(b);

Maar wat ik krijg is lege uitvoer.

int a = '1';
char b = (char) a;
System.out.println(b);

Ik krijg 1 als uitvoer.

Kan iemand dit uitleggen? En als ik een int naar een char wil converteren zoals in het eerste fragment, wat moet ik dan doen?


Antwoord 1, autoriteit 100%

int a = 1;
char b = (char) a;
System.out.println(b);

print de char af met Unicode-codepunt1 (start-of-heading char, die niet kan worden afgedrukt; zie deze tabel: C0-besturingselementen en basislatijn, hetzelfde als ASCII)

int a = '1';
char b = (char) a;
System.out.println(b);

print de char af met Unicode-codepunt 49 (een die overeenkomt met ‘1’)

Als je een cijfer wilt converteren (0-9), kun je er 48 aan toevoegen en casten, of iets als Character.forDigit(a, 10);.

Als u een intwilt converteren die wordt gezien als een Unicode-codepunt, kunt u Character.toChars(48)bijvoorbeeld.


Antwoord 2, autoriteit 56%

Mijn antwoord is vergelijkbaar met het antwoord van jh314, maar ik zal het iets dieper uitleggen.

Wat u in dit geval moet doen is:

int a = 1;
char b = (char)(a + '0');
System.out.println(b);

Hier hebben we ‘0’ gebruikt omdat tekens eigenlijk worden weergegeven door ASCII-waarden. ‘0’ is een char en wordt vertegenwoordigd door de waarde 48.

We hebben (a + '0')getypt en om deze bij elkaar op te tellen, heeft Java ‘0’ geconverteerd naar zijn ASCII-waarde die 48 is en a is 1, dus de som is 49. Dan wat we deden is:

(char)(49)

We hebben intnaar chargecast. ASCII-equivalent van 49 is ‘1’. U kunt op deze manier elk cijfer naar char converteren en het is een slimmere en betere manier dan de methode .toString()te gebruiken en het cijfer vervolgens af te trekken met de methode .charAt().


Antwoord 3, autoriteit 36%

Het lijkt erop dat u op zoek bent naar de Character.forDigit-methode:

final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'

Er is ook een methode die van een char terug naar een int kan converteren:

int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'

Merk op dat door het wijzigen van de RADIXu ook hexadecimaal (radix 16) en elke radix tot 36 (of Character.MAX_RADIXzoals het ook wordt genoemd) kunt ondersteunen .


Antwoord 4, autoriteit 8%

int a = 1;
char b = (char) a;
System.out.println(b);

hola, nou ik heb hetzelfde probleem gehad, maar wat ik deed was de volgende code.

int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);

Hiermee krijg je de decimale waarde als een char-type. Ik gebruikte charAt() met index 0 omdat de enige waarde in die string ‘a’ is en zoals je weet, begint de positie van ‘a’ in die string bij 0.

Sorry als mijn Engels niet goed wordt uitgelegd, ik hoop dat het je helpt.


Antwoord 5, autoriteit 3%

int a = 1;
char b = (char) (a + 48);

In ASCII heeft elke char zijn eigen nummer. En char ‘0’ is 48 voor decimaal, ‘1’ is 49, enzovoort. Dus als

char b = '2';
int a = b = 50;

Antwoord 6, autoriteit 3%

misschien wilt u dat het wordt afgedrukt als ‘1’ of als ‘a’.

Als u ‘1’ als invoer wilt, dan :

int a = 1;
char b = (char)(a + '0');
System.out.println(b);

Als u ‘a’ als invoer wilt, dan :

int a = 1;
char b = (char)(a-1 + 'a');
System.out.println(b);

java verandert de ascii-waarde in char 🙂


Antwoord 7

Niemand heeft hier de echte “vraag” beantwoord: je converteert int correct naar char; in de ASCII-tabel is een decimale waarde van 01 “begin van kop”, een niet-afdrukbaar teken. Zoek een ASCII-tabel op en converteer een int-waarde tussen 33 en 7E; dat geeft je karakters om naar te kijken.


Antwoord 8

Telkens wanneer je cast integer naar char typt, wordt de ascii-waarde van die int geretourneerd (ga een keer door de ascii-tabel voor een beter begrip)

   int a=68;
    char b=(char)a;
    System.out.println(b);//it will return ascii value of 68
    //output- D

9

Als we het hebben over klassentypen – geen primitieven, moet de volgende truc worden gedaan:

Integer someInt;
Character someChar;
someChar = (char)Integer.parseInt(String.valueOf(someInt));

10

Als u ASCII-tekens wilt afdrukken op basis van hun ASCII-code en niet verder wilt gaan dan dat (zoals Unicode-tekens), kunt u uw variabele definiëren als een byte en vervolgens de (char) converteren. d.w.z.:

public static void main(String[] args) {
    byte b = 65;
    for (byte i=b; i<=b+25; i++) {
        System.out.print((char)i + ", ");
    }

BTW, de ASCII-code voor de letter ‘A’ is 65


11

Zorg ervoor dat de integer-waarde ASCII-waarde is van een alfabet / karakter.

Zo niet, maak het dan.

for e.g. if int i=1

voeg er dan 64 bij op zodat het 65 wordt = ASCII-waarde van ‘A’
Gebruik dan

char x = (char)i;
print x
// 'A' will be printed 

Antwoord 12

Er is één methode waarmee intkan worden geconverteerd naar charen zelfs zonder ASCII-waarden te gebruiken.

Voorbeeld:

int i = 2;
char ch = Integer.toString(i).charAt(0);
System.out.println(ch);

Uitleg :

Eerst wordt het gehele getal geconverteerd naar een tekenreeks en vervolgens wordt met behulp van de tekenreeksfunctie charAt()het teken uit de tekenreeks gehaald. Aangezien het gehele getal maar één cijfer heeft, wordt de index 0gegeven aan de functie charAt().


Antwoord 13

Converteer eerst de int(of een ander type) naar String,

int a = 1;
String value = String.valueOf(a);

Converteer vervolgens die Stringnaar char.

char newValue = value.charAt(0);

Je kunt op deze manier lege uitvoer vermijden…

System.out.println(newValue);

Antwoord 14

bekijk het volgende programma voor het complete conversieconcept

class typetest{
    public static void main(String args[]){
        byte a=1,b=2;
        char c=1,d='b';
        short e=3,f=4;
        int g=5,h=6;
        float i;
        double k=10.34,l=12.45;
        System.out.println("value of char variable c="+c);
        // if we assign an integer value in char cariable it's possible as above
        // but it's not possible to assign int value from an int variable in char variable 
        // (d=g assignment gives error as incompatible type conversion)
        g=b;
        System.out.println("char to int conversion is possible");
        k=g;
        System.out.println("int to double conversion is possible");
        i=h;
        System.out.println("int to float is possible and value of i = "+i);
        l=i;
        System.out.println("float to double is possible");
    }
}

Hoop, het zal op zijn minst iets helpen


15

Als u een personage naar het bijbehorende geheel getal wilt converteren, kunt u zoiets doen:

int a = (int) 'a';
char b = (char) a;
System.out.println(b);

Dit gebeurt, want in ASCII zijn er enkele items die niet normaal kunnen worden afgedrukt.

Nummers 97 tot 122 zijn bijvoorbeeld gehele getallen die overeenkomen met de kleine letters A tot Z.


16

public class String_Store_In_Array 
{
    public static void main(String[] args) 
    {
        System.out.println(" Q.37 Can you store string in array of integers. Try it.");
        String str="I am Akash";
        int arr[]=new int[str.length()];
        char chArr[]=str.toCharArray();
          char  ch;
        for(int i=0;i<str.length();i++)
        {
            arr[i]=chArr[i];
        }
        System.out.println("\nI have stored it in array by using ASCII value");
        for(int i=0;i<arr.length;i++)
        {
            System.out.print(" "+arr[i]);
        }
        System.out.println("\nI have stored it in array by using ASCII value to original content");
        for(int i=0;i<arr.length;i++)
        {
             ch=(char)arr[i];
            System.out.print(" "+ch);
        }
    }
}

Other episodes