C# fehler beim konvertieren (int/string)

Berba

Lt. Junior Grade
Registriert
Okt. 2007
Beiträge
290
Sehr geehrte Community ich bin an meine Grenzen beim Programmieren gestoßen.

Code:
Random zufall = new Random();
            string tempzahl = "";
            for (int i = 1; i < 2; i++)
            {
                while (tempzahl.Length <= 9)
                {
                neu:
                    string number = Convert.ToString(zufall.Next(0, 10));
                    if (tempzahl.Contains(number))
                    { goto neu; }
                    else
                    { tempzahl = tempzahl + number; }


                }

Code:
int testzahl = Convert.ToInt32(tempzahl);
                label13.Text = Convert.ToString(tempzahl);

ich lasse also einen string aus den zahlen 1-9 erstellen. diesen würde ich gern in einen int konvertieren um danach mit ihm arbeiten zu können.. irgendwie funktioniert die sache allerdings nicht. es führt zu einem fehler der besagt "Der Wert für einen Int32 war zu groß oder zu klein.<2 .......für mich völlig unverständlich...


ursprünglich wollte ich ja den string erstellen und dann mit tempzahl.ElementAt() auf die einzelnen ziffern zugreifen zu können..wo also liegt mein fehler?!?

vielen dank schon im voraus
 
Int32 kann ja nur von -2Mrd bis +2Mrd gehen. Eventuell ist deine Zahl größer?
 
cx01 hat recht, hast du dir auch mal angesehen was für Zahlen da raus kommen?

Da kommt zb. 7.231.096.584 int geht aber nur bis 2.147.483.647.
long geht bis 9.223.372.036.854.775.807.
 
Da einen Umweg über einen String zu gehen halte ich auch für weitgehend sinnlos.
 
gut
das sollte auch nur zur veranschaulichung dienen...

eigentlich möchte ich ja mit tempzahl.ElementAt(0) auf das erste element der zeichenkette zugreifen....
wenn ich aber schreibe

variable = Convert.ToInt64(tempzahl.ElementAt(0)) + 81;

und die zeichenkette is 3748294601...dann gibt er nicht den wert 84 zurück =/
 
ElementAt liefert dir dann den ASCII Wert, das wäre bei '0'=>48, '1'=>49, usw.

EDIT: Muss mich korrigieren. Convert.ToInt64(char) liefert dir den ASCII Wert des übergebenen Chars. Du musst stattdessen die Int64.Parse() Methode verwenden.
 
Zuletzt bearbeitet:
Code:
Random zufall = new Random();
long tmpZahl = =;
for(int i = 0; i < 9; i++){
    tmpZahl *= 10;
    tmpZahl += zufall.Next(0,10);
}
Console.writeLine(tmpZahl.toString());

So würd ich mir die Zahl zusammenbasteln.

Und wieso verwendest du "goto"? Ich kenne keinen Programmierer der das befürworten würde. Allgemein sieht mir dein Code nach ner Mishung aus Basic und C# aus. Ist das absicht?
 
Black_Panter schrieb:
Code:
Random zufall = new Random();
long tmpZahl = =;
for(int i = 0; i < 9; i++){
    tmpZahl *= 10;
    tmpZahl += zufall.Next(0,10);
}
Console.writeLine(tmpZahl.toString());

So würd ich mir die Zahl zusammenbasteln.
Dann kann aber jede Zufallszahl mehrfach vorkommen, z.B: 3337777755

Ich würde es so machen:
Code:
Random zufall = new Random();
string tempzahl = "";
while (tempzahl.Length <= 9)
{
	string number;
	do {
		number = Convert.ToString(zufall.Next(0, 10));
	}
	while (tempzahl.Contains(number));
	
	tempzahl = tempzahl + number;
}
 
Alternativ könnte er auch eine Liste mit den Zahlen erstellen und dann zufällig eine herausnehmen.
 
Code:
            string zahlen = string.Empty;
            Random rnd = new Random();
            string rndzahl;
            int endzahl;

            while (zahlen.Length <= 9)
            {
                rndzahl = rnd.Next(0, 10).ToString();

                if(!zahlen.Contains(rndzahl))
                {
                    zahlen += rndzahl;
                }
            }

Und bitte goto aus deinem Wortschatz streichen.
 
problem ist gelöst..das erstellen des string "tempzahl" war nie mein problem, sondern der zugriff auf die einzelnen elemente

basic sagt mir gar nichts...goto ist für meine zwecke sicherlich noch zu gebrauchen..die programme sind sehr kurz .. :D
 
@Berba: goto ist nie zu gebrauchen. Für mich als Programmierer kommt das einer Beleidigung gleich, wenn ich sowas im Source-Code lese. ;) Und alles wo du goto verwenden wollen würdest, lässt viel schöner in einer Schleife o.ä. schreiben.
 
Sehe ich genauso und man sollte eigentlich meinen das niemand mehr auf die Idee kommt goto zu verwenden.
Egal wie kurz ein Programm ist, es hat die Verwendung von goto einfach nicht verdient :D
 
Zurück
Oben