Frage zu (char)

  • Tag,


    nachdem ich nun auch ein bisschen in Java eingestiegen bin hab ich auch gleich mal ne Frage.
    Ich möchte einfach mit Hilfe einer Zahl ein Zeichen erstellen
    nachdem ich ein bisschen gegoogelt hab denke ich das es so funktioniert: (char)65
    Das oben genannte gibt natürlich ein A aus, funktioniert also.
    Jetzt mein Codeausschnitt:



    Code
    //ret ist als String deklariert und rest als int
    			ret += (rest >= 10) ? (char)(55+rest) : rest; // Das hier funktioniert aber nicht!!!
    			if(rest >= 10) //Diese If abfrage funktioniert so...
    				ret += (char)(55+rest);
    			else
    				ret += rest;


    Habe ich hier oben z.b. einen rest von 16 so kommt bei der vereinfachten if else anweisung 07 heraus.
    Bei der normalen If abfrage erscheint das gewünschte F.


    Kann mir einer sagen warum das so ist? Natürlich wäre die kurzform schöner. Vielleicht gibt es aber auch einen viel besseren weg?

    MFG FireFlyer


    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Für dich tu ich doch alles, weisst du doch :D


    • Offizieller Beitrag


    Vermutlich ist das Behandeln innerhalb der tertiären Anweisung zu früh...


    Johannes

  • was heisst "zu früh"?
    Ich möchte ja keine Zahl rausbekommen o_O
    Oder gibts noch andere möglichkeiten zahlen in Zeichen um zu wandeln?

    MFG FireFlyer


    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Ja das Problem ist aber wenn die Zahl nun kleiner 10 ist wird ja trotzdem das ASCII Zeichen ausgegeben. Das will ich ja nur bei Zahlen >= 10
    Hab ich glaube ich net wirklich erwähnt oben. Egal ich habe jetzt halt ne normale if else anweisung genommen. Mich hat halt interessiert warum es so nicht funktioniert.

    MFG FireFlyer


    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • du willst also quasi Hexadezimalzahlen darstellen/umrechnen?


    Also ich denke das liegt daran, dass der ? : - Operator keine 2 unterschiedlichen Typen zurückgeben kann. Und dann wird 2x Int zurückgeben. Ich würde das in dem Fall so lösen:


    Code
    for (int i = 0; i < 16; i++) {
    
    
    			if (i < 10)
    				System.out.println(i);
    			else
    				System.out.println((char) ('A' + i - 10));
    
    
    		}
  • okay das wusste ich net, danke levi das klingt einleuchtend :)


    So in der Art hab ich es auch gelöst:

    Code
    if(i <= 10)
    ret += (char)(55+i)
    else
    ret += i;

    MFG FireFlyer


    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D