Autor Beitrag
Untaimed
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 16.10.13 17:32 
Hey,
zur Info: Ich bin blutiger Anfänger in C#.
Bin auf ein Problem gestoßen das ich mehr als nur unlogisch finde.
Ich lasse den Benutzer einen Integer eingeben (bsp. 5) und lasse diesen Wert dann in der Konsole anzeigen.
Doch es wird ein ganz anderer Wert angezeigt.


So sieht ein beispielscode aus:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
using System;
using System.Collections.Generic;
using System.Text;

namespace _23
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Bitte gib' Zahl1 ein: ");
            int zahl1 = Console.Read();

            Console.Write("Zahl 1 lautet: " + zahl1);

            Console.ReadKey(true);
        }
    }
}


Und in der Konsole wird das angezeigt:
[url=www.imagebanana.com/...jfkzv/Unbenannt.PNG]user defined image[/URL]

Wieso wird aus der 5 einfach eine 53?
Ich kann mit den Werten gar nicht gescheit rechnen.

Bei jeder Zahl die ich eingebe kommt eine 53...

Wenn ich den Integer Wert als String einlese und erst dann in einen Integer konvertiere, dann gehts aber darauf hab ich auf Dauer auch keine Lust -.-

Moderiert von user profile iconTh69: Code- durch C#-Tags ersetzt
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mi 16.10.13 17:41 
Hi und :welcome: im Forum!

Unlogisch ist der Fehler nicht:
ausblenden C#-Quelltext
1:
int zahl1 = Console.Read();					

Wenn du einen String hart in einen Integer castest, gibt dir C# den ASCII-Code des ersten Zeichens des Strings zurück.


Zuletzt bearbeitet von Marc. am Mi 16.10.13 17:54, insgesamt 2-mal bearbeitet
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mi 16.10.13 17:42 
user profile iconUntaimed hat folgendes geschrieben Zum zitierten Posting springen:
Hey,
Ich lasse den Benutzer einen Integer eingeben (bsp. 5) und lasse diesen Wert dann in der Konsole anzeigen.
Doch es wird ein ganz anderer Wert angezeigt.


Der Nutzer gibt keinen Integer ein, sondern eine Zeichenkette, also einen sog. String.

user profile iconUntaimed hat folgendes geschrieben Zum zitierten Posting springen:
Wieso wird aus der 5 einfach eine 53?

Du castest deine Eingabe relativ hart auf Integer. Also nimmt C# den Zahlenwert der Eingabe, in diesem Fall also das Zeichen "5", das entspricht dann der Nummer 53.

user profile iconUntaimed hat folgendes geschrieben Zum zitierten Posting springen:
Ich kann mit den Werten gar nicht gescheit rechnen.


Na ja, kannst du schon. Nur, dass die Eingabe schwierig ist. Man muss halt den ALT-Code [alt]+5 eingeben. Ob das funktioniert, habe ich nicht geprüft btw.

user profile iconUntaimed hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich den Integer Wert als String einlese und erst dann in einen Integer konvertiere, dann gehts aber darauf hab ich auf Dauer auch keine Lust -.-

Das Leben kann sehr hart sein. Geht aber in einer Zeile ;)
ausblenden C#-Quelltext
1:
2:
3:
int intTemp = Convert.ToInt32(Console.Readline());
//auch gerne genommen: 
int n= int.Parse(Console.ReadLine());
Untaimed Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 16.10.13 18:03 
Okay ich danke euch !!!
Habt mir sehr geholfen und hab nun verstanden woran es liegt.
War es von Java anders gewohnt :)


MfG
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 16.10.13 18:04 
Gib mal einen Buchstaben ein anstatt einer Zahl.

Edit:
Zitat:
War es von Java anders gewohnt :)


Auch in Java würdest du Zeichen von der Console lesen und müßtest erst mit Integer.parseInt oder ähnlichem umwandeln.
Untaimed Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 16.10.13 18:33 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:

Auch in Java würdest du Zeichen von der Console lesen und müßtest erst mit Integer.parseInt oder ähnlichem umwandeln.


Also wenn ich das in Java mit dem Scanner eingeben lassen habe, dann war das nie so :-0