Datentyp char -> Zeichen um einen Wert erhöhen

Status
Nicht offen für weitere Antworten.

babuschka

Top Contributor
Guten Abend 🙂

Mein Problem ist folgendes:
Ich möchte eine Caesar-Verschiebung in einem kleinen Java-Programm umsetzen (Aus 'a' wird 'b', aus 'b' wird 'c' ....)
An der entscheidenden Stelle versagen allerdings meine Kentnnisse...
Wie erhöhe ich den Wert einer Variable vom Typ char um eine Stelle?

Mit..

Code:
    char test01 = 97;
    System.out.print(test01);    // Ausgabe: a

lässt sich zwar ein Wert vom ASCII-Code einer Char-Variable zuweisen, allerdings funktioniert folgendes nicht..

Code:
    char test02 = 'a' + 1;

Hat jemand eine Idee, wie man den Wert einer Char-Variable um eine Stelle erhöhen könnte?

Vielen Dank im voraus!


Viele Grüße,
Rouven
 
@André Uhres

Du hast Recht, mit

Code:
    char test = 'a' + 1;

funktioniert es einwandfrei.

Ich hatte mich ein wenig vertan, denn mein eigentliches Problem sah so aus...

Code:
    int test_int = 1;
    char test_char = 'a' + test_int;

Damit bekommt man bei der Kompilierung folgende Fehlermeldung um die Ohren:

Test.java:9: possible loss of precision
found : int
required: char
test_char = 'a' + test_byte;

Auch mit einer Variable vom Typ byte funktioniert es nicht.

Jemand eine Idee? :bahnhof:

Viele Grüße,
Rouven
 
Mit...
Code:
test_char = 'a' + (char)test_byte;
klappt es wunderbar! Vielen Dank! 😀


Viele Grüße,
Rouven
 
@Leoroy42

Ich habe daran gedacht, trotzdem danke für den Hinweis! 🙂
Bin gerade dabei nicht nur die Verschiebung des Alphabets bestimmen zu können, sondern auch Code-Wörter benutzen zu können.
Z.B.:
"WELT"
->WELTABCDFGHIJKMNOPQRSUVWXYZ

Sehr interessanters Thema.. 😉

Viele Grüße,
Rouven
 
Hi,

da ich beim "Rumspielen" mit der o. g. Verschlüsselung letzte Woche auch was komische gefunde habe schließe ich mich hier einfach mal an mit meiner Frage.

Und zwar hab ich mir char[] erzeugt und wollte diese dann komplett einfach um einen bestimmten Wert "verfälschen". Dazu hat meine Methode alles mögliche übergeben bekommen und ich wollte einfach erstmal folgendes machen:

Code:
         // Das char[] ist natürlich line :-)
         for (int i = 0; i < line.length; i++) {
            char a = line[i];
            // Die folgende Zeile geht NICHT und eclipse bringt mir einen Type mismatch wg. convert
            // from int to char
            line[i] = a + 1;
            // Zum Testen warum die obere Zeile nicht geht habe ich folgedes propiert und das funktioniert
            char b = 'a' + 1;
         }

Kann mir von euch einer sagen warum die eine Zeile geht und die andere nicht?
 
@ Eminent

Da hast du ja (fast) das gleiche Problem wie ich 😉

Vielleicht kann ich dir ein wenig helfen...

Code:
         // Das char[] ist natürlich line :-) 
         for (int i = 0; i < line.length; i++) { 
            char a = line[i]; 
            // Die folgende Zeile geht NICHT und eclipse bringt mir einen Type mismatch wg. convert 
            // from int to char 
            line[i] = a + 1;
Dass diese Zeile so nicht funktioniert, liegt an der Addition von der Char-Variable und der 1. Um die beiden Werte zu addieren, werden sie in Integer-Variablen umgewandelt. Das Ergebnis, das immernoch int ist, wird an die Char-Variable line übergeben, was natürlich nicht funktioniert.
Eine Lösung wäre:
Code:
    line[i] = (char) (a + 1);
mit (char) davor "zwingst" du den Wert der Addition in deine Char-Variable.


Diese Zeile funktioniert...
Code:
            // Zum Testen warum die obere Zeile nicht geht habe ich folgedes propiert und das funktioniert 
            char b = 'a' + 1; 
         }
weil hier keine Char-Variable, sondern der Wert 'a' (bzw. 97) mit 1 addiert wird.


Ich hoffe, ich konnte dir bei deinem Problem helfen.

Viele Grüße,
Rouven
 
Rouven hat gesagt.:
Dass diese Zeile so nicht funktioniert, liegt an der Addition von der Char-Variable und der 1. Um die beiden Werte zu addieren, werden sie in Integer-Variablen umgewandelt. Das Ergebnis, das immernoch int ist, wird an die Char-Variable line übergeben, was natürlich nicht funktioniert.
Eine Lösung wäre:
Code:
    line[i] = (char) (a + 1);
mit (char) davor "zwingst" du den Wert der Addition in deine Char-Variable.

Perfekt genau das wars was ich (mal wieder blind gewesen :bahnhof: ) nicht hin bekommen hab!!! DANKE
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben