String in Int Array?


Baladhi

Mitglied
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
 

Baladhi

Mitglied
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
 

vfl_freak

Premium-User
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
 

Baladhi

Mitglied
Also ich habe mir nun die ersten 3 Seiten bei Google angesehen aber nichts passt auf meine Situation bzw dem was ich brauche. :-(
 

ademo

Mitglied
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
            }
 

Baladhi

Mitglied
Klasse, nun fehlt mir noch der Hinweis wie ich dann auf die einzelnen Zahlen zugreifen kann um mit ihnen zu rechen. Vielen lieben Dank. :)
 

ademo

Mitglied
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:

Baladhi

Mitglied
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*
 

vfl_freak

Premium-User
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
 

ademo

Mitglied
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 ^^

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
 

Baladhi

Mitglied
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:

vfl_freak

Premium-User
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
 

Baladhi

Mitglied
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
 

Baladhi

Mitglied
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
 

ademo

Mitglied
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.
 

Neue Beiträge