Laden...

Startindex einer Liste auf 1 statt 0 ändern

Erstellt von Redmoon147 vor 8 Jahren Letzter Beitrag vor 8 Jahren 15.268 Views
Thema geschlossen
R
Redmoon147 Themenstarter:in
17 Beiträge seit 2015
vor 8 Jahren
Startindex einer Liste auf 1 statt 0 ändern

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

Hinweis von Coffeebean vor 8 Jahren

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.

P
40 Beiträge seit 2011
vor 8 Jahren

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.

1.040 Beiträge seit 2007
vor 8 Jahren

@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#?

Y
102 Beiträge seit 2005
vor 8 Jahren

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.

1.040 Beiträge seit 2007
vor 8 Jahren

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

R
Redmoon147 Themenstarter:in
17 Beiträge seit 2015
vor 8 Jahren

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

1.040 Beiträge seit 2007
vor 8 Jahren

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?

Y
102 Beiträge seit 2005
vor 8 Jahren

@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

G
17 Beiträge seit 2015
vor 8 Jahren

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.

R
Redmoon147 Themenstarter:in
17 Beiträge seit 2015
vor 8 Jahren

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? 😄

1.040 Beiträge seit 2007
vor 8 Jahren

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

G
17 Beiträge seit 2015
vor 8 Jahren

Sieht verdächtig danach aus...

2.207 Beiträge seit 2011
vor 8 Jahren

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

G
17 Beiträge seit 2015
vor 8 Jahren

@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 😃

82 Beiträge seit 2014
vor 8 Jahren

@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

R
Redmoon147 Themenstarter:in
17 Beiträge seit 2015
vor 8 Jahren

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

2.207 Beiträge seit 2011
vor 8 Jahren

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

Thema geschlossen