Frage von Eleflo176, 18

Problem beim Compilen meines Codes?

Der hier beschriebene Code, gibt während des Compilens den Wert 52 aus, obwohl ich "a" den Wert 5 zugewiesen habe. Warum tut es dies und wie kann ich das ändern? 

int a;

 Console.WriteLine("Wert für a: "); 

 a = Console.Read();  //Wert für a eingeben (=5)

 Console.Write(a); //Wer 52 wird für a ausgegeben

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Isendrak, 8

Das Problem liegt darin, dass System.Console.Read() tatsächlich einen System.Int32 zurückgibt, aber nur, damit beim erreichen des EOF (End of File) des StandardInput der Wert -1 zurückgegeben werden kann. Ansonsten gibt System.Console.Read() den ASCII-Code des eingegebenen Zeichens zurück.

Damit das ganze wie gewünscht funktioniert (und ggf. auch mehrstellige Zahlen möglich sind) probiere folgendes:

int a = 0;
Console.Write("Wert für a: ");
while(!int.TryParse(Console.ReadLine(), out a)){
Console.Write("Ungültiger Wert.\r\nWert für a: ");
}
Console.WriteLine("a hat den Wert {0}", a);

Bei weiteren Fragen zu den hier verwendeten "Dingen" wird empfohlen diese zu stellen. ;)

Antwort
von Eleflo176, 12

int a;

Console.WriteLine("Wert für a: ");

a = Console.Read();

Console.Write(a);

Das ist der Code

Kommentar von ralphdieter ,

Ich kenne zwar Deine Programmiersprache nicht, aber 52 ist der ASCII-Wert des Zeichens '5'.

Console.Read() liefert vermutlich das nächste Zeichen aus der Eingabe als char (0..255).

Console.Write(char(a)) sollte dann wie gewünscht '5' ausgeben.

Kommentar von oelbart ,

Oder Du initialisierst a gleich als char, das müsste auch funktionieren.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten