String in Int Array?

#1
Hallo zusammen, ich habe gerade angefangen mit C# und habe mir ein kleines Projekt zum lernen erdacht. ich möchte ein Programm schreiben welches mir die Gültigkeit einer Personalausweisnummer errechnet. Dazu muss der Benutzer eine "Zahl" in eine Textbox eingeben. Nun kann ich ja damit nicht rechnen da es ja ein String ist und ich die einzelnen Zahlen brauche um damit Berechnungen anzustellen. Wenn der User also zb 22789 eingibt, muss ich mit jeder einzelnen Ziffer rechnen können. Wie zerlege ich also Diese Zahl und wie speichere ich sie dann am besten um mit ihnen rechnen zu können (mit einem Array?)? Ich wäre wirklich Dankbar wenn mir das jemand anhand eines kleinen Beispiels zeigen könnte. :)

Vielen lieben Dank schon mal.

MlG
 
#2
#3
Ah noch ein Osnabrücker?! :)
Ja, den String in ein Int zu verwandeln wäre nicht das Problem, das Problem ist den Int dann in einzelne Zeichen zu zerlegen. Also das ich mit der 2 eine Berechnung anstellen kann und mit der 7 und mit der 9 usw.

MlG
 
#4
Yeep :p

Laufe einfach mit einer Schleife (über die Stringlänge) durch den String. Dann kannst Du jedes einzelne Zeichen ("myString.charAt(i)") vom char in einen Integer umwandeln!

Gruß
Klaus
 
#8
hab mal was zusammen getippt ich hoffe das geht für dich

Code:
            string zahl = "123456";

            int i = 0;
           
            List<int> numern = new List<int>();

            if (Int32.TryParse(zahl, out i))
            {
                while (i > 0)
                {
                    numern.Add(i % 10);
                    i = i / 10;
                }
                numern.Reverse();
            }
            else
            {
                // es ist kein Zahl
            }
 
#10
Code:
            int summe = 0;

            foreach (var item in numern)
            {
                summe = summe + item;
             
            }

            for (int i = 0; i < numern.Count; i++)
            {
                summe =  summe + numern[i];
            }

            summe = (from x in numern select x).Sum();

            var s = (from x in numern where x == 2 select x).Count();
usw...

gruss Ademo

http://www.dotnetperls.com/list
 
Zuletzt bearbeitet:
#11
Nun bin ich verwirrt und sehe den Wald vor lauter Bäumen nicht mehr. :(
Schon strange dass das so kompliziert ist. Unter PHP kann ich das ganz einfach zb mit $Variable = $Zahlen[0] * 5; machen, da muss ich nix umwandeln (was nicht das Problem wäre), aber unter C# ..... *Bahnhof*
 
#12
Moin,

was heißt kompliziert?
Java ist halt eine (richtige) Programmiersprache, bei der die einzelnen Datentypen typsicher sind !!

Wobei mir auch nicht wirklich klar ist, warum/was Du mit den einzelnen Ziffern der Eingabe rumrechnen willst ...

Gruß
Klaus
 
#13
in den meisten fällen ist das convertieren keine grosse sache.

Code:
.ToString(); //geht fast immer
Convert.ToInt32();
Convert.ToByte();
Convert.ToChar();
usw
zum prüfen ob die convertierung geht einfach

Code:
if (Int32.TryParse(zahl, out i))
{

}
else
{

}

wenn dein porjekt mal genügend gross ist wirst do froh sein um die Typen sicherheit :D

Moin,

was heißt kompliziert?
Java ist halt eine (richtige) Programmiersprache, bei der die einzelnen Datentypen typsicher sind !!
geht es nicht um c# :D php ist auch eine richtige Programmiersprache aber nicht Objektorientiert
 
#14
Naja ... also erstens geht es mir nicht um Java sondern um C#, und zweitens hatte ich ja oben schon beschrieben warum ich die Zahlen aus der Eingabe einzeln brauche.
Also, ich habe eine Textbox in der man eine Zahl eigeben kann, zb die zahl 2854. Nun möchte/kann ich nicht mit der ganzen Zahl rechnen sondern einmal mit der 2 dann mit der 8 dann mit der 5 dann mit der 4 usw. Das heisst also ich möchte mit jeder einzelnen Ziffer der Zahl eine Berechnung anstellen (als Beispiel: 2*5, 8*7, 5*5, 4*2). Weiss nicht, besser kann ich es gerade nicht erkären.

MlG
 
Zuletzt bearbeitet:
#15
Ja, sorry ... das mit Java war ein kleiner Lapsus :oops:

Ok, wenn Du es so brauchst, dann musste jede einzelne Stelle im String in einen entsprechenden Datentyp (Short, Integer, etc.) umwandeln!

Gruß
Klaus
 
#16
Ja genau, und genau dafür hätte ich gern ein Beispiel, da ich so etwas nicht gefunden habe. Also zb wie ich auf eine Ziffer der Zahl zugreifen kann um damit zu rechnen. :)

MlG
 
#17
#18
Wie gesagt keine Ahnung. Darum bitte ich hier ja auch um ein Beispiel damit ich es nachvollziehen kann Also wie ich die Zahl auslese, umwandle und dann darauf zugreifen kann. Denn durch solche Beispiele lerne ich das am besten. :)

MlG
 
#19
#20
meinst du etwa so?

Code:
            string zahl = "2854";

            int i = 0;
           
            List<int> numern = new List<int>();

            if (Int32.TryParse(zahl, out i))
            {
                while (i > 0)
                {
                    numern.Add(i % 10);
                    i = i / 10;
                }
                numern.Reverse();

                int value = 0;

                foreach (var item in numern)
                {
                    if (value == 0)
                    {
                        value = item;
                    }
                    else
                    {
                        value = value * item;
                    }
                }

            }
            else
            {
                // es ist kein Zahl
            }

mach doch einfach mal ein Beispiel in php.