Darstellung von Ausgaben bei Schleifen



  • int i;
       for (i = 0; i <= 10; i++)
       Console.Write("{0}, ",i);
    

    Hallo habe eine etwas dumme Frage aber ich sitze auf dem Schlauch. Wie schaffe ich es das die Zahlen die in der For Schleife erzeugt werden in der Ausgabe mit einem Komma voneinander getrennt in einer Zeile stehen?

    Mit meiner Lösung stimmt das zwar, doch nach der letzten Zahl (hier die 10) steht ebenfalls ein Komma.

    Wäre Euch dankbar wenn Ihr mir helfen könntet.



  • Ich würde das jetzt so lösen:

    char comma = i != 10 ? ',' : '';
    Console.Write("{0}{1}", i, comma);
    


  • int i;
       string ausgabe ="";
       for (i = 0; i <= 10; i++)
       ausgabe += string.Format("{0}, ",i);
       ausgabe.TrimEnd(',');
    


  • _> schrieb:

    int i;
       string ausgabe ="";
       for (i = 0; i <= 10; i++)
       ausgabe += string.Format("{0}, ",i);
       ausgabe.TrimEnd(',');
    

    Um Himmels willen, schonmal was von StringBuilder gehört? 😉



  • JCarlson schrieb:

    Ich würde das jetzt so lösen:

    Naja nicht mit char, es gibt keine leeren chars. Wenn dann mit string.

    Es gibt 2 mal 2 Standardvarianten. Erstens hat man die Wahl, ob man in der Schleife den Index abfragt oder ob man den einen Sonderfall außerhalb der Schleife dupliziert. Zweitens hat man die Wahl, ob das erste oder das letzte Element der Sonderfall ist.

    // Variante 1: In der Schleife, letztes Element ist Sonderfall
    for (int = 0; i <= 10; i++)
      if (i == 10)
        Console.Write("{0}", i);
      else
        Console.Write("{0}, ", i);
    
    // oder natürlich
    for (int i = 0; i <= 10; i++)
    {
      Console.Write("{0}", i);
      if (i != 10)
        Console.Write(", ");
    }
    
    // Variante 2: Vor der Schleife, erstes Element ist Sonderfall
    Console.Write("{0}", 0);
    for (int i = 1; i <= 10; i++)
      Console.Write(", {0}", i);
    
    // Varianten 3 und 4 zur Übung
    

    Normalerweise würde ich was mit string.Join basteln.

    string.Join(", ", Enumerable.Range(0, 11));
    


  • Hey Leute,

    vielen Dank für die vielen und schnellen Antworten. Werde nachher mal schauen wie ich es am besten umsetze.
    Das ganze ist ein wenig komplexer habe es nur vereinfacht um besser erklären zu können was ich brauche.

    Weiß auch nicht warum ich dort hängen bleib.

    Danke


Anmelden zum Antworten