Guten morgen 😃
Die Liste fängt ja üblicherweise bei 0 an kan man das so machen das Sie vielleicht bei 1 anfängt das heißt wenn ich in das textfeld 20 eingeb erstellt er mir 19 Items. wie kann ich es machen das es 20 sind
public void addHaeuser(int anzahl)
{
for (int i = 1; i <= anzahl; i++)
{
haeuser.Add("Inhalt der Schublade leer!");
}
int ergebnis = haeuser.Count();
if (ergebnis != anzahl)
{
int result = ergebnis + anzahl;
string resultEnd = result.ToString();
}
}
ändere ich das i auf 0 dann kommt mir 21 häuser raus als ergebnis hat aber nur 20 erstellt wie kann ich das ändern
MfG
Redmoon147
Ich habe mal den Titel editiert. Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 3. Wenn du einen besseren Vorschlag hast, dann editier ihn nochmal. Kein Suchender wird wissen, was mit dem Titel "Frage zur Liste" gemeint ist, wenn er den Thread in der Suche findet. Dein Problem hat mir der Anzahl von Items in einer Liste und deren (Start)Index zu tun. Das sollte im Titel auch klar werden.
Mit deinem (geposteten) Code müsste es doch richtig funktionieren. Wenn anzahl=20 wird deine Schleife 20x durchlaufen und somit 20 Einträge in die Liste hinzugefügt.
Sollt dem nicht so sein vergleiche deinen Code mit dem hier geposteten und verwende den Debugger um zu kontrollieren wieviele Einträge die Liste nach jedem Schleifedurchlauf hat.
@Redmoon147:
Könntest du deine Sätze evtl. bissel lesbarer machen? Teilweise sind sie schwer zu verstehen, da ohne Punkt und Komma.
Ansonsten hat Pippl recht, der Code fügt dir genau die übergebene Anzahl an Häusern zur Liste hinzu.
EDIT: Evtl. hilft es, wenn du dir mal die Grundlagen von C# anschaust um zu verstehen, was die Schleife genau macht, wann sie zuende ist etc.
[FAQ] Wie finde ich den Einstieg in C#?
Hallo,
Sieh dir dazu deine Schleife an. Wenn du i auf 0 änderst muss du entsprechend deine Bedingung bearbeiten. Du startest bei 0 und gehst bis 20. Das sind insgesamt 21 durchläufe.
Ändere hierbei die Bedingung
i<=anzahl
zu
i<anzahl
Somit läuft die Schleife von 0 bis 19 und ergibt somit 20.
@Yeats: Die gepostete Schleife funktioniert korrekt, da er da ja bei 1 anfängt und bis kleiner gleich Anzahl geht.
Wenn er mit 0 beginnt, muss natürlich das gleich weg.
Der Startindex einer Liste hat übrigens Nullkommanix mit dem Problem zu tun, da er ja
haeuser.Add
nutzt.
Yeats
ja aber ich hab ein feld wo dran steht wie viele häuser ich habe da steht dann 19, obwohl ich 20 habe.
Ich möchte aber das mir 20 angezeigt werden bzw das er bei 1 anfängt die Liste zu zählen und nicht bei 0.
Geht das überhaupt ? 8o
Yeats
ja aber ich hab ein feld wo dran steht wie viele häuser ich habe da steht dann 19, obwohl ich 20 habe.
Ich möchte aber das mir 20 angezeigt werden bzw das er bei 1 anfängt die Liste zu zählen und nicht bei 0.
Geht das überhaupt ? 8o
Überprüfe mit dem Debugger, wie der Count der Liste ist!
[Artikel] Debugger: Wie verwende ich den von Visual Studio?
Oder anders gefragt: wie befüllst du das Feld?
@p!lle
ändere ich das i auf 0 dann kommt mir 21 häuser raus als ergebnis hat aber nur 20 erstellt wie kann ich das ändern
Ich verstand die Frage so, dass er bei 0 starten wollte. Somit wäre die Bedingung im Schleifenkopf zum Anpassen gewesen. Wenn der Ersteller der Frage mit 1 starten möchte dann ist das natürlich auch legitim.
@Redmoon147: Hierfür sieh dir die Antwort von p!lle an
Hallo Redmoon147,
ja aber ich hab ein feld wo dran steht wie viele häuser ich habe da steht dann 19, obwohl ich 20 habe.
Welches Feld meinst du? Kann es sein, das deine Aussage sich auf Source-Code bezieht, der nicht gepostet wurde?
Die Schleife legt korrekt die Anzahl an Items an.
Ich stell die Frage vielleicht mal anderst:D
**
Gibt es eine Möglichkeit die Liste nicht mit 0 sonder mit 1 zu beginnen?**
Theoretisch gesehen kann ich in Haus 0 ja nichts speichern also in der Reallität gesehen 😄
Wenn ich eine Liste mit 20 Häusern hab geht der Indexer von 0 bis 19, dass weiß ich ja.
ich möchte aber im Indexer 1 - 20 etwas einspeichern.
Ist die Frage jetzt verständlicher und besser gestellt? 😄
Was willst du damit erreichen? 🤔
EDIT: Für mich nochmal: Du hast in deinem Ausgangspost schon immer 20 Häuser in deiner Liste gehabt, dann aber immer nur mit Index 1 - 19 gearbeitet?! 8o
Gibt es eine Möglichkeit die Liste nicht mit 0 sonder mit 1 zu beginnen?
Hallo Redmoon147,
sorry, so laufen Arrays und Collections leider nicht. Mach das einmal in einem Programm und jedesmal, wenn du mit den Collections/Arrays arbeitest beisst du dich in den Hintern, weil du jedesmal umdenken musst. Du bekommst mehr Exceptions als dir lieb ist. Sowas ist eben nunmal nullbasiert.
Du kannst deinem Objekt auch eine ID geben. Dann wäre an Stelle/Index 0 ein Objekt mit der Id 1.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
@Redmoon147,
wenn es für dich klar ist, das das erste Element in einer Liste den Index 0 hat, dann ist auch eine mögliche Lösung recht simpel (wenn auch nicht zu empfehlen).
Wenn du mit dem Indexer auf ein Element zugreifst, verwende deine "wirkliche" Hausnummer minus 1.
Das eigentliche Problem scheint aber wohl zu sein, das du dich nicht mit der Zählweise von Listenelementen (Index) anfreunden kannst 😃
@Redmoon147
eventuell holst Du Dir die Daten für Dein Feld "Anzahl" aus dem Index Deiner Auflistung? Das würde erklären, warum Du 19 bekommst. Wie schon geschrieben 0-19 sind 20. Du kannst aber bei Listen die Eigenschaft "Count" abfragen, die enthält den Wert 20.
Prüfe doch mal, woher Du Deine 19 bekommst.
schnelleHelga
Also ich hab das ganze jetzt so gemacht:D
public int setHaeuser(int i, string wert)
{
hauser[i - 1] = wert;
return i;
}
public String getHaeuser(int i)
{
return hauser[i - 1];
}
der rest den ich oben gepostet hab ist gleich geblieben 😄
Danke für eure Hilfe
MfG
Redmoon147
Da der Thread zwar wenige Satzzeichen aber dafür viele Missverständnisse aber auch Lösungen hat, ist hier mal zu. Nicht dass noch mehr Verwirrung entsteht.
Finde dich damit ab, dass ein Index nullbasiert ist. Sonst bekommst du nur Probleme. Nimm die Lösungen hier an und lies dir mal die Antworten richtig durch.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck