Autor Beitrag
dennismijo
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 14.01.09 18:12 
Hallo.

Ich sitze gerade bei einer Aufgabe und komme komischerweise an einer eigenlich simplen stelle, wegen einer merkwürdigen ausgabe nicht weiter.

Also ich habe folgende Klasse:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
class Coin
    {
        string ary = "";

        public void setA(string s)
        {
            ary = s;
        }

        public void genDec()
        {
            int erg = ary[ary.lenght-1];

            Console.Writeline(erg);
            
        }
    }


Das Hauptprogramm gibt an setA einen string der zB diesem entspricht "0101011010".

Wenn ich nun einfach den Wert von erg ausgebe (der ja eigentlich 0 oder 1 sein müsste) kommt bei mir immer die zahl 48 heraus.

Wenn ich jedoch die Ausgabe so starte:

ausblenden C#-Quelltext
1:
Console.WriteLine(arty[ary.lenght - 1),					


kommt mein gewünschtes Ergebnis.

Ich habe schon sehr komplexere Programme in C# geschrieben, doch hier, kann ich es mir nicht erklären und verzweifle ;)

Jemand eine Idee? ;)
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 14.01.09 18:16 
Zuerst einmal finde ich es erstaunlich, dass Dein String die Eigenschaft "lenght" kennt :D

Zum anderen musst Du mal überlegen, was Du in dieser Zeile machst:
ausblenden C#-Quelltext
1:
int erg = ary[ary.lenght-1];					

Du hast links einen int, rechts hast Du einen char. Da wird ein impliziter Cast ausgeführt, was wohl den Ordinalwert des Chars ergeben dürfte.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
dennismijo Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mi 14.01.09 18:21 
Ok, darüber habe ich schon nachgedacht.

Wie ist es mir dann möglich ein Element aus dem String zu entnehmen?

leider funktioniert sowas wie Convert.ToIn32 auch nicht :/
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 14.01.09 18:23 
Du musst den Char halt vorher in einen String konvertieren, aber das sollte ja keine große Hürde sein :-)

IMHO ist Int32.Parse(...) logischer (im Sinne von OOP) als Convert.ToInt32.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Greenberet
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 339
Erhaltene Danke: 20

Win 10
C# (VS 2012), C++ (VS 2012/GCC), PAWN(Notepad++), Java(NetBeans)
BeitragVerfasst: Mi 14.01.09 18:55 
bzw. nachdem es sich hier nur um 1 ziffer handelt kannst du auch

int erg = ary[ary.length-1]-'0'; machen =)