Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Startindex einer Liste auf 1 statt 0 ändern
Redmoon147
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

Startindex einer Liste auf 1 statt 0 ändern

beantworten | zitieren | melden

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

Moderationshinweis von Coffeebean (12.11.2015 - 09:42)

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.

private Nachricht | Beiträge des Benutzers
Pippl
myCSharp.de - Member



Dabei seit:
Beiträge: 40

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
p!lle
myCSharp.de - Member

Avatar #avatar-3556.jpg


Dabei seit:
Beiträge: 1.040

beantworten | zitieren | melden

@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#?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von p!lle am .
private Nachricht | Beiträge des Benutzers
Yeats
myCSharp.de - Member



Dabei seit:
Beiträge: 97
Herkunft: Österreich

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Yeats am .
private Nachricht | Beiträge des Benutzers
p!lle
myCSharp.de - Member

Avatar #avatar-3556.jpg


Dabei seit:
Beiträge: 1.040

beantworten | zitieren | melden

@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.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von p!lle am .
private Nachricht | Beiträge des Benutzers
Redmoon147
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
p!lle
myCSharp.de - Member

Avatar #avatar-3556.jpg


Dabei seit:
Beiträge: 1.040

beantworten | zitieren | melden

Zitat von Redmoon147
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?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von p!lle am .
private Nachricht | Beiträge des Benutzers
Yeats
myCSharp.de - Member



Dabei seit:
Beiträge: 97
Herkunft: Österreich

beantworten | zitieren | melden

@p!lle
Zitat
ä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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Yeats am .
private Nachricht | Beiträge des Benutzers
Grombi
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: Hamburg

beantworten | zitieren | melden

Hallo Redmoon147,
Zitat
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.
private Nachricht | Beiträge des Benutzers
Redmoon147
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

beantworten | zitieren | melden

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 :D
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? :D
private Nachricht | Beiträge des Benutzers
p!lle
myCSharp.de - Member

Avatar #avatar-3556.jpg


Dabei seit:
Beiträge: 1.040

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von p!lle am .
private Nachricht | Beiträge des Benutzers
Grombi
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: Hamburg

beantworten | zitieren | melden

Sieht verdächtig danach aus...
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2.207
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Zitat von Redmoon147
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
private Nachricht | Beiträge des Benutzers
Grombi
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: Hamburg

beantworten | zitieren | melden

@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 :)
private Nachricht | Beiträge des Benutzers
schnelleHelga
myCSharp.de - Member

Avatar #avatar-3513.gif


Dabei seit:
Beiträge: 82
Herkunft: Erzgebirge

beantworten | zitieren | melden

@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
private Nachricht | Beiträge des Benutzers
Redmoon147
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

beantworten | zitieren | melden

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 :D
Danke für eure Hilfe

MfG

Redmoon147
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Redmoon147 am .
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2.207
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers