Java Character nimmt keinen Int?


26.02.2024, 09:59

geht auch nciht


26.02.2024, 10:00

hier

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Dann caste doch zu Character wenn es ohne Cast nicht geht.


YaHobby 
Fragesteller
 26.02.2024, 10:03

gönn dir stern funzt

1

Char hat bekanntlich einen viel kleineren Wertebereich als int. Daher wird hier nicht automatisch konvertiert, weil dadurch Werte verloren gehen könnten.

Also muss man das explizit mit einem Typecast erzwingen:

charty[i] = (char)i;

Das ist übrigens keine Java-Spezialität, das wirst du in jeder strikt typisierten Sprache erleben.


YaHobby 
Fragesteller
 26.02.2024, 09:36

hatte ich schon gemacht, aber das ist ja nicht der wert für 0 als character der ist ja viel höher, ich will '0' und nicht das zeichen an stelle 0 im ascii code, weißt du wie das geht?

0
YaHobby 
Fragesteller
 26.02.2024, 09:58
@Destranix

geht leider auch nicht, ich weiß schon dass man dafür funktionen von der string library nehmen kann, aber frage mich ob es auch ohne geht und ohne auch nur einen wert im ascii code zu kennen

0
Destranix  26.02.2024, 09:59
@YaHobby

Was sollte dabei nicht gehen? Welchen fehler erhälst du?

0
YaHobby 
Fragesteller
 26.02.2024, 09:59
@Destranix

hab oben eingefügt unter meiner frage

1
Destranix  26.02.2024, 09:59
@YaHobby

*augenroll*

Dann caste halt das i in der Expression zu char ;-)

1
YaHobby 
Fragesteller
 26.02.2024, 10:00
@Destranix

hab wieder ein schönes bild für dich

0
Destranix  26.02.2024, 10:01
@YaHobby

Wenn da noch dieselbe Fehlermeldung steht läuft irgendetwas falsch. Compile nochmal und schau, ob der Fehler bestehen bleibt.

EDIT:

Oder versuch einmal die ganze Expression zu casten.

1
YaHobby 
Fragesteller
 26.02.2024, 10:02
@Destranix

ne geht nicht, wenn ich da ein character einsetzte kompiliert es normal

0
hamberlona  26.02.2024, 09:56

Nein, das ist falsch, denn das Schriftzeichen 0 steht nicht an erster Stelle. Im ASCII-Alphabet steht es erst an 48. Stelle, und man weiß ja nicht, ob unter dem Betriebssystem vielleicht EBCDIC statt ASCII verwendet wird. Du hast ihn missverstanden. Er will nicht den Wert i, sondern den Wert des Schriftzeichens, das die Ziffer i darstellt.

0

Deine Schleife iteriert nicht von 0 bis 1, sondern von 0 bis 4.

Wenn charty[i] die Zahl als Character speichern soll, versuch es mit

charty[i] = i + '0';

Also die 0 unbedingt zwischen Apostrophs (als Character).


YaHobby 
Fragesteller
 26.02.2024, 09:56

geht auch nicht, da ist das wieder wegen dem falschen datentyp

0
jo135  26.02.2024, 09:58
@YaHobby

Klar, weil hier wieder ein int erzeugt wird statt einem char. Destranix hat dir unter meiner Antwort schon die richtige Lösung gegeben.

0
YaHobby 
Fragesteller
 26.02.2024, 09:59
@jo135

geht auch nicth siehe ergänzung zu meiner frage

0
hamberlona  26.02.2024, 09:59
@YaHobby

Dann verrate uns doch mal das Geheimnis, wie Du charty[] deklariert hast.

0
YaHobby 
Fragesteller
 26.02.2024, 10:00
@hamberlona

steht im bild, char[] charty = new charty[5];

0