it-swarm.com.de

Konvertiere int in char in java

Unten ist ein Code-Ausschnitt,

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

Was ich aber bekomme, ist eine leere Ausgabe.

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

Ich bekomme 1 als Ausgabe. 

Kann jemand das erklären? Und wenn ich ein int wie im ersten Snippet in ein Zeichen konvertieren möchte, was soll ich tun?

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

gibt das Zeichen mit dem Wert 1 aus (Startzeichen des Zeichens, das nicht druckbar ist).

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

druckt das Zeichen mit dem ASCII-Wert 49 aus (eins entspricht '1')

Wenn Sie eine Ziffer (0-9) konvertieren möchten, können Sie 48 hinzufügen und umwandeln oder etwa Character.forDigit(a, 10);.

Wenn Sie eine int als ASCII-Wert konvertieren möchten, können Sie beispielsweise Character.toChars(48) verwenden.

86
jh314

Meine Antwort ist der Antwort von jh314 ähnlich, aber ich erkläre etwas tiefer.

Was Sie in diesem Fall tun sollten, ist:

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

Hier haben wir '0' verwendet, weil Zeichen tatsächlich durch ASCII Werte dargestellt werden. '0' ist ein Zeichen und wird durch den Wert von 48 dargestellt. 

Wir haben (a + '0') eingegeben, und um diese zusammenzurechnen, konvertierte Java '0' in seinen ASCII - Wert, der 48 ist und a ist 1, also ist die Summe 49.

(char)(49)

Wir haben int in char gegossen. ASCII entspricht 49 als '1'. Sie können jede Ziffer auf diese Weise in Zeichen umwandeln und ist intelligenter und besser als die .toString()-Methode und dann die Ziffer mit der .charAt()-Methode abzuziehen.

43
Haggra

Es scheint, als würden Sie nach der Character.forDigit-Methode suchen:

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

Es gibt auch eine Methode, die von einem Char zurück in ein int konvertieren kann:

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

Beachten Sie, dass Sie durch Ändern von RADIX auch Hexadezimalzeichen (Radix 16) und alle Radixzeichen bis 36 (oder Character.MAX_RADIX) unterstützen können.

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

hola, ich habe das gleiche Problem durchgemacht, aber was ich getan habe, war der folgende Code.

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

Damit erhalten Sie den Dezimalwert als Zeichenart. Ich habe charAt () mit Index 0 verwendet, da der einzige Wert in diesem String 'a' ist und wie Sie wissen, die Position von 'a' im String beginnt bei 0.

Sorry, wenn mein Englisch nicht gut erklärt ist, hoffe es hilft Ihnen.

9
3ryck
int a = 1;
char b = (char) (a + 48);

In ASCII hat jedes Zeichen eine eigene Nummer. Und Zeichen '0' ist 48 für Dezimalzahlen, '1' ist 49 und so weiter. Also wenn

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

Wenn wir über Klassentypen sprechen, nicht über Primitive, muss der folgende Trick ausgeführt werden:

Integer someInt;
Character someChar;

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

Niemand hat hier die eigentliche "Frage" beantwortet: Sie konvertieren int in char richtig. In der Tabelle ASCII ist ein Dezimalwert von 01 "Anfang der Überschrift", ein nicht druckendes Zeichen. Suchen Sie nach einer ASCII - Tabelle und konvertieren Sie einen int-Wert zwischen 33 und 7E. Das gibt Ihnen Charaktere zum Anschauen.

1
apraetor

wenn Sie ASCII-Zeichen basierend auf ihrem ASCII-Code drucken möchten und nicht darüber hinausgehen möchten (wie Unicode-Zeichen), können Sie Ihre Variable als Byte definieren und dann die Konvertierung (char) verwenden. d.h.

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

Im Übrigen lautet der ASCII-Code für den Buchstaben 'A' 65

0
MohS

schauen Sie sich das folgende Programm für ein vollständiges Konvertierungskonzept an

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

hoffe, es hilft wenigstens etwas

0
Shivam Rai

In Java ist ein Zeichen ist ein Int. Ihr erstes Snippet gibt das Zeichen aus, das dem Wert 1 im Standard-Zeichencodierungsschema entspricht (wahrscheinlich Unicode). Das Unicode-Zeichen U + 0001 ist ein nicht druckbares Zeichen, weshalb Sie keine Ausgabe sehen.

Wenn Sie das Zeichen '1' ausdrucken möchten, können Sie den Wert '1' in dem von Ihnen verwendeten Kodierungsschema nachschlagen. In Unicode sind dies 49 (wie bei ASCII). Dies funktioniert jedoch nur für die Ziffern 0-9.

Sie sollten besser einen String anstelle eines Zeichens und die integrierte toString()-Methode von Java verwenden:

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

Dies funktioniert unabhängig von Ihrer Systemkodierung und für mehrstellige Ziffern.

0
david25272

Stellen Sie sicher, dass der Ganzzahlwert ASCII eines Alphabets/Zeichens ist.

Wenn nicht, dann mach es.

for e.g. if int i=1

fügen Sie dann 64 hinzu, so dass der Wert 65 'ASCII von' A '

char x = (char)i;

print x

// 'A' will be printed 
0
Mayur Gudi

Immer wenn Sie in Zeichen eine Ganzzahl in Zeichen eingeben, wird der ASCII-Wert dieses Inters zurückgegeben.

    int a=68;
    char b=(char)a;

    System.out.println(b);//it will return ascii value of 68

    //output- D
0
ajay verma