2016-11-19 3 views
0

Ich habe einen einfachen Code, nur um Spaß zu haben, es sollte das gesamte Alphabet gedruckt werden, jeder Buchstabe getrennt von 100 Leerzeilen ... Aber das druckt keine Zeile ....Konsole druckt keine Zeilen und/oder Wörter

Hinweis: Bevor ich Code ähnlich zu diesem verwendet und es funktioniert (offensichtlich war der andere echte Code und hatte nicht die 100 Zeilen dingy) "alfabeto" = "Alphabet" (Portugiesisch Wort, ich würde 26 Zeilen nicht übersetzen, wenn ich nur sagen konnte

)
namespace Alfabeto_das_100_linhas 
{ 
    class Inicial 
    { 
     static void Main(string[] args) 
     { 
      string[] alfabeto = new string[26]; 
      alfabeto[0] = "A"; 
      alfabeto[1] = "B"; 
      alfabeto[2] = "C"; 
      alfabeto[3] = "D"; 
      alfabeto[4] = "E"; 
      alfabeto[5] = "F"; 
      alfabeto[6] = "G"; 
      alfabeto[7] = "H"; 
      alfabeto[8] = "I"; 
      alfabeto[9] = "J"; 
      alfabeto[10] = "K"; 
      alfabeto[11] = "L"; 
      alfabeto[12] = "M"; 
      alfabeto[13] = "N"; 
      alfabeto[14] = "O"; 
      alfabeto[15] = "P"; 
      alfabeto[16] = "Q"; 
      alfabeto[17] = "R"; 
      alfabeto[18] = "S"; 
      alfabeto[19] = "T"; 
      alfabeto[20] = "U"; 
      alfabeto[21] = "V"; 
      alfabeto[22] = "W"; 
      alfabeto[23] = "X"; 
      alfabeto[24] = "Y"; 
      alfabeto[25] = "Z"; 

      for (int i = 0; i <= alfabeto.Length; i++) 
      { 
       Console.WriteLine(alfabeto[i]); 

       for(int iii = 0; i != 100; iii++) 
       { 
        Console.Write("\n"); 
       } 
       Console.WriteLine(); 
      } 
      Console.Read(); 
     } 
    } 
} 

Antwort

1

Ihre innere Schleife ist falsch:

  for(int iii = 0; i != 100; iii++) 
      { 
       Console.Write("\n"); 
      } 

Abhängig von dem Wert von i wird dies entweder nichts tun oder für immer Schleife.

es sein sollte:

  for(int iii = 0; iii < 100; iii++) 
      { 
       Console.Write(Environment.NewLine); 
      } 

Neben der Schleife entgegen Fixieren Sie die Zeichenfolge\n anstatt das Newline-Zeichen wurden ausgegeben wird. Sie könnten WriteLine auch mit einer leeren Zeichenfolge verwenden.

Jetzt schaue ich wieder, ich sehe, dass Ihre äußere Schleife auch falsch ist. Es sollte sein:

for (int i = 0; i < alfabeto.Length; i++) 

Wenn Sie Schleife der Zählung gleich der Länge können Sie die Länge des Feldes nicht überschreiten werden - ein 26-Element-Array-Indizes 0 bis 25.

Wenn Sie nicht Sicher, was die innere Schleife tut, würde ich den End-Test auf etwas überschaubarer (5 zum Beispiel) reduzieren, so dass Sie genau sehen können, wie viele Zeilen zwischen jedem Ihrer Buchstaben eingefügt werden. Sie könnten der Schleifenzähler (als Debug-Maßnahme) als zusätzliche Kontrolle

+1

Und äußerlich auch. Sollte 'i elshev

+0

@elshev Ich änderte wie Sie (beide) sagte und das genaue gleiche passiert ... Es fügt neue Zeilen unendlich und keine Zeichen ... –

+0

@RodrigoGameiro, das funktioniert für mich . Vielleicht können Sie die Zeichen einfach nicht sehen, weil sie durch 100 Leerzeilen getrennt sind. –

0

Beachten Sie auch, ebenfalls ausgegeben, dass Sie 101 Linie, nicht 100. Sollte sein:

for (int i = 0; i < alfabeto.Length; i++) 
{ 
    Console.WriteLine(alfabeto[i]); 
    for (int iii = 0; iii < 100; iii++) 
    { 
     Console.WriteLine(); 
    } 
} 
Console.Read(); 

Oder können Sie vereinfachen:

string s = new string('\n', 100); 
for (char ch = 'A'; ch <= 'Z'; ch++) 
{ 
    Console.WriteLine(ch); 
    Console.Write(s); 
} 
Console.Read(); 
+1

Es ist korrekt, aber auch für gute Praxis ... verwenden Sie '\ r \ n' oder' Environment.NewLine' anstelle von '\ n' für Nicht-Unix-Plattformen – Jim