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



BeitragVerfasst: Do 25.08.16 18:50 
Hallo liebe Community,

um ehrlich zu sein, weiß ich nicht genau, wie ich die Frage stellen soll, deswegen erzähle ich euch einfach, was ich vorhabe.

Ich möchte eine lokale mysql-Datenbank erstellen mit Zahlen von 001 bis 999.

Nun möchte ich teilweise nicht nur einzelne Zahlen erfassen, sondern ganze Zahlenketten, zum Beispiel 254-954 - also hier dann 254,354,454,554,654,754,854,954.

In der Theorie habe ich mir überlegt, dass das eventuell mithilfe eine do-while Schleife machbar wäre. Also in dem Stil
ausblenden Quelltext
1:
2:
3:
do {
  linke Zahl + 10
} while (Summe aus linke Zahl + 10 < rechte Zahl + 10);

Also quasi dass er die linke Zahl aus 254-954 nimmt und diese so lange + 10 addiert, bis das Ergebnis 954 ist. Und dieses Ergebnis soll dann als Array wiedergegeben werden, so dass ich im Endeffekt die Zahlen 254,354,454,554,654,754,854,954 in meiner Datenbank speichern kann.

Ich bin noch ziemlich am Anfang, was C# angeht, und evtl. ist meine Frage nicht präzise genug :D Aber ich bin dennoch für jede Art von Tipp oder Hilfestellung dankbar.

Viele Grüße
elmarvo

Moderiert von user profile iconTh69: Code-Tags hinzugefügt
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1194
Erhaltene Danke: 158

Windows 10 x64 Home Premium
C# (VS 2015 Enterprise)
BeitragVerfasst: Do 25.08.16 19:16 
Ein typischer Fall für die for-Schleife und eine Liste.

Die for-Schleife tut genau das, was Du in deiner while-Schleife willst.
Sie beginnt mit einem Wert, prüft ob der Wert eine Bedingung erfüllt (kleiner als 954) und zählt diesen Wert in einem bestimmten Intervall hoch.

ausblenden C#-Quelltext
1:
2:
3:
4:
for (var i = 254; i <= 954; i += 10)
{
    // ...
}


Die Größe des Arrays ist fest, Du müsstest also vorher berechnen, wie viele Zahlen es werden und das ist dann doch recht umständlich.
Daher gibt es die Liste, der Du dann in der Schleife jede Zahl hinzufügen kannst.

ausblenden C#-Quelltext
1:
2:
3:
var numbers = new List<int>();
numbers.Add(254);
var numberArray = numbers.ToArray();


Ein Array brauchst Du aber nicht unbedingt.
Die meisten Frameworks arbeiten mit IEnumerable<T>, ein Interface, das von jeder Auflistung implementiert wird/werden sollte.

Für diesen Beitrag haben gedankt: elmarvo
elmarvo Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 25.08.16 19:44 
Danke für die Antwort.

Ich dachte bisher, dass die Enums nur bei Wochentagen nützlich seien... also wenn bereits feststeht, welche Tage durchenumeriert werden sollen ^^

EDIT: Wegen dem IEnumerable<T> :oops: Ich dachte, das hätte etwas mit Enumerationen zu tun...

Nun ist es ja so, dass die Werte 254 und 954 nicht vorgegeben sind.

Es soll eine simple Form werden, mit einer Textbox zur Eingabe. Wenn man nun z. B. 050 eingibt, dann speichert er auch nur 050. Wenn ich nun 050-950 eingebe, dann soll er in 10er-Schritten von 050 bis 950 durchzählen.

Das mit der Liste hört sich am sinnvollsten an.

Aber ich bin gerade etwas sehr verwirrt ^^

Viele Grüße
elmarvo

Nochmal EDIT: Vielen Dank für den Tipp mit Split und TryParse. Ich werde mich in die Themen einlesen. Wenn ich weiter gekommen bin, melde ich mich hier ggf nochmal.


Zuletzt bearbeitet von elmarvo am Do 25.08.16 20:21, insgesamt 3-mal bearbeitet
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1194
Erhaltene Danke: 158

Windows 10 x64 Home Premium
C# (VS 2015 Enterprise)
BeitragVerfasst: Do 25.08.16 20:04 
Wie kommst Du jetzt auf Enums?


Das mit dem String würde ich erst mit string.Split und dann int.TryParse lösen.
Mit der Split-Methode kannst Du den String splitten, als Trennzeichen nimmst Du den Bindestrich.
Kommt da ein Array mit Länge = 1 raus, hast Du nur eine Zahl, die Du mit int.TryParse parsen musst.
Kommt da ein Array mit Länge = 2 raus, hast DU den Wertebereich, wo Du Anfang und Ende parst und dann hoch zählst.


Falsche Eingaben musst Du natürlich noch abfangen.
Sind zwei Bindestriche drin, dann hast Du drei Elemente im Array und so weiter.

Für diesen Beitrag haben gedankt: elmarvo
elmarvo Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 25.08.16 20:24 
user profile iconelmarvo hat folgendes geschrieben Zum zitierten Posting springen:
Danke für die Antwort.

Ich dachte bisher, dass die Enums nur bei Wochentagen nützlich seien... also wenn bereits feststeht, welche Tage durchenumeriert werden sollen ^^

EDIT: Wegen dem IEnumerable<T> :oops: Ich dachte, das hätte etwas mit Enumerationen zu tun...

Nun ist es ja so, dass die Werte 254 und 954 nicht vorgegeben sind.

Es soll eine simple Form werden, mit einer Textbox zur Eingabe. Wenn man nun z. B. 050 eingibt, dann speichert er auch nur 050. Wenn ich nun 050-950 eingebe, dann soll er in 100er-Schritten von 050 bis 950 durchzählen.

Das mit der Liste hört sich am sinnvollsten an.

Aber ich bin gerade etwas sehr verwirrt ^^

Viele Grüße
elmarvo

Nochmal EDIT: Vielen Dank für den Tipp mit Split und TryParse. Ich werde mich in die Themen einlesen. Wenn ich weiter gekommen bin, melde ich mich hier ggf nochmal.
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1194
Erhaltene Danke: 158

Windows 10 x64 Home Premium
C# (VS 2015 Enterprise)
BeitragVerfasst: Do 25.08.16 20:42 
IEnumerable<T> ist die generische Variante von IEnumerable
Das Interface wird unter Anderem auch von foreach benötigt.
Es gibt die einen Enumerator, der 1. das nächste Element abrufen kann und 2. das aktuelle Element kennt.
Foreach macht mit dem Enumerator dann genau das: Das nächste (bzw. erste) Element abfragen und damit dann den Code ausführen.

Die List und auch das Array implementieren dieses Interface, deshalb kannst Du diese Typen in der foreach-Schleife nutzen.

Für diesen Beitrag haben gedankt: elmarvo