2017-04-11 4 views
1

Ich versuche, mein 'Spiel' auf der Vorderseite jeder Zeile dieses Codes erscheinen, aber es erscheint am Ende und ich kann nicht herausfinden, wie meine Schleifen so zu beheben Es erstellt eine neue Zeile zur richtigen Zeit.For-Schleife mit geordneten Array-Formatierungsfehler

static void Main() { 

      int[,] lottoNumbers ={ 
            { 4, 7, 19, 23, 28, 36}, 
            {14, 18, 26, 34, 38, 45}, 
            { 8, 10,11, 19, 28, 30}, 
            {15, 17, 19, 24, 43, 44}, 
            {10, 27, 29, 30, 32, 41}, 
            { 9, 13, 26, 32, 37, 43}, 
            { 1, 3, 25, 27, 35, 41}, 
            { 7, 9, 17, 26, 28, 44}, 
            {17, 18, 20, 28, 33, 38} 
           }; 

      int[] drawNumbers = new int[] { 44, 9, 17, 43, 26, 7, 28, 19 }; 

      PrintLottoNumbers(lottoNumbers); 

      ExitProgram(); 
     }//end Main 

static void PrintLottoNumbers(int[,] lottoN) 
     { 
      for (int x = 0; x < lottoN.GetLength(0); x++) { 
       for (int y = 0; y < lottoN.GetLength(1); y++) { 
        if(y < 1 && x > 0) 
        { 
         Console.WriteLine("Game" + lottoN[x, y] + " "); 
        }else { 
         Console.Write($"{lottoN[x, y],2}" + " "); 
         //Console.Write(lottoN[x, y] + " "); 
        } 

       } 
      } 

     }//Print Function For Lotto Numbers 

Antwort

1

Versuchen Sie, diese wollten:

 for (int x = 0; x < lottoNumbers.GetLength(0); x++) 
     { 
      Console.Write("Game" + lottoNumbers[x, 0] + "\t"); 
      for (int y = 0; y < lottoNumbers.GetLength(1); y++) 
      { 
       Console.Write($"{lottoNumbers[x, y],2}" + "\t"); 
      } 
      Console.WriteLine(); 
     } 
+0

Perfekt! Vielen Dank, Jungs! – BobFisher3

1

Blick auf den Code

Console.WriteLine("Game" + lottoN[x, y] + " "); 
}else { 
Console.Write($"{lottoN[x, y],2}" + " "); 

Hier haben Sie gesagt, den Text Spiel + Sachen schreiben und enden mit einer Linie, andernfalls nur schreiben zusätzliche Sachen in die bestehende Linie. vielleicht

zB es zeigt

Game 1 2 3 4 5 game 1 
2 3 4 5 

Wenn Sie Spiel müssen am Anfang einer Zeile sein, zuerst einen Zeilenvorschub senden! Im wahrscheinlich

Console.Writeline();  
Console.Write("Game" + lottoN[x, y] + " "); 
}else { 
Console.Write($"{lottoN[x, y],2}" + " "); 

erraten ist wahrscheinlich die Formatierung Sie

zB

game 1 2 3 4 5 
game 1 2 3 4 5 
+0

Anreise dorthin! Jetzt hat es einen Platz nach der 1. Nummer: 3 – BobFisher3

0

die sauberste und lesbare Weise i s, um die Erstellung des Textes für eine Reihe von Einträgen in eine separate Methode zu extrahieren, und dann für jede Zeile aufzurufen. Etwas wie folgt aus:

static void PrintLottoNumbers(int[,] lottoN) 
    { 
     for (int x = 0; x < lottoN.GetLength(0); x++) 
     { 
      Console.WriteLine("Game" + GetRowText(lottoN, x)); 
     } 

    }//Print Function For Lotto Numbers 

    static string GetRowText(int[,] lottoN, int row) 
    { 
     var builder = new StringBuilder(); 
     for (int x = 0; x < lottoN.GetLength(1); x++) 
     { 
      builder.Append(" " + lottoN[row, x]); 
     } 
     return builder.ToString(); 
    } 
1

Warum erschweren Dinge mit einem if-else

 for (int x = 0; x < lottoN.GetLength(0); x++) { 
      Console.Write("\nGame "); 
      for (int y = 0; y < lottoN.GetLength(1); y++) { 
       Console.Write($"{lottoN[x, y],2}"); 
      } 
     } 

einfach das Schreiben des Spiels in der ersten Schleife bewegen.

Dies druckt eine zusätzliche Leerzeile, aber um das zu vermeiden, können Sie eine zusätzliche Bedingung hinzufügen.

Console.Write((x!=0 ? "\n" : string.Empty) + "Game "); 
Verwandte Themen