2016-04-25 7 views
0

Diese Frage bezieht sich auf meine 2D-Array-Anzeige, die derzeit ungefähr so ​​aussieht.2D-Array-Anzeige

A B C D 
1: 0 0 0 0 
2: 0 0 0 0 
3: 0 0 0 0 

Ich versuche Standort zu erhalten (0,0) an die Nummer 1, da dies zu ändern, wird der Beginn meiner Zählung sein.

Allerdings wird es nicht ändern und bleibt wie eine Null, hier ist mein Code.

int[][] chessBoard = new int[3][4];                     
int rowhead = 1;                          
    TextIO.put(" ");                        
for (int col = 0; col < chessBoard[0].length; col++)                 
    TextIO.putf("%4s",((char) ('A' + col)));                   
    TextIO.putln();                         

for (int [] row:chessBoard){                       
    TextIO.put(rowhead++ + ":");                      
for (int griddisplay:row)                      
    TextIO.putf("%4d", griddisplay);                     
    TextIO.putln();                         
    chessBoard [0][0] = 1; 

Nun ist diese hält meine Koordinaten (o, o) eine Null anzeigt, aber wenn ich diese Schachbretts ändern [0] [0] = 1; zu diesem chessBoard [1] [0] = 1;

Dann wird das Gitter entsprechend

ändern
A B C D 
1: 0 0 0 0 
2: 1 0 0 0 
3: 0 0 0 0 

Wohin gehe ich falsch?

+0

Es Sie drucken scheint, bevor Sie ändern? –

+1

Was ist TextIO? Dieser Code ist unvollständig und die Einrückung weist darauf hin, dass Sie den Gültigkeitsbereich einer for-Schleife möglicherweise nicht verstehen. –

+0

Können Sie bitte mehr von Ihrem Code posten? – sebenalern

Antwort

0

Bewegen Sie chessBoard [0][0] = 1; direkt unter dem TextIO.put(rowhead++ + ":");:

int[][] chessBoard = new int[3][4]; 
    int rowhead = 1; 
    TextIO.put(" "); 
    for (int col = 0; col < chessBoard[0].length; col++) 
     TextIO.putf("%4s",((char) ('A' + col))); 
    TextIO.putln(); 

    for (int [] row:chessBoard) { 
     TextIO.put(rowhead++ + ":"); 
     chessBoard[2][3] = 1; 
     for (int griddisplay : row){ 
      TextIO.putf("%4d", griddisplay); 
     } 
     TextIO.putln(); 
    } 

und es wird propertly =) arbeiten.

+0

Ich habe den Code selbst getestet und es funktioniert, ich verstehe nicht warum der Downvote? – Leo

+0

Ich habe getan, wie Sie empfohlen, Sie haben Recht, dass es funktioniert. Ich bin ziemlich neu dazu, so unsicher, warum du abgemeldet wurdest! – JavaTheHutt

+0

Könnten Sie bitte die Antwort akzeptieren, wenn sie Ihr Problem gelöst hat? – Leo

-1

Sie scheinen einige Formatierungsprobleme zu haben, aber aus dem Kern von ihm:

Sie Ihr Schachbrett als Array konstruieren [3] [4] und von den Blicken von ihm, die 3 ‚Zeilen‘ und 4 'Spalten', so ist Ihr erster Index Ihre Zeilennummer und die zweite Spaltennummer.

Sie durchlaufen die erste 'Zeile', um die Länge (4) zu erhalten, also geben 4 Spalten aus - richtig nehme ich an.

Sie bewegen sich dann zum Drucken des Schachbretts (obwohl ich die passende geschweifte Klammer nicht sehe}). Zuerst schlingen Sie über Zeilen und dann über Spalten.

Zum Beispiel:

for (int [] row:chessBoard) {                       
    TextIO.put(rowhead++ + ":");                      
    for (int griddisplay:row)                      
     TextIO.putf("%4d", griddisplay);                     
    TextIO.putln();                        
    chessBoard [0][0] = 1; 
} 

Wenn dies Ihr Code ist, beginnt die erste Schleife die erste Reihe zu verarbeiten. Es durchläuft die Spalten für die erste Zeile, THEN setzt [0] [0] auf 1 ... aber Sie haben das bereits gedruckt, so dass es nicht angezeigt wird. Wenn Sie es durch [1] [0] ersetzen, setzt es das tatsächlich, BEVOR Sie die zweite Zeile drucken, damit der Wert korrekt angezeigt wird.

Als letzten Tipp geben die geschweiften Klammern den Umfang der for-Schleife an. Wenn Sie die Klammern weglassen, führt die Schleife nur die Anweisung unmittelbar danach aus. Eine Gewohnheit, in die viele Programmierer geraten, ist, immer explizit Klammern zu verwenden, um einfache Fehler zu vermeiden.

1

Ihr Code funktioniert gut, ich ein paar Methoden nur addiert und ausgegeben geändert

public class Chessboard 
{ 

    public static void main(String[] args) 
    { 
     int[][] chessBoard = new int[3][4];                                              

     print(chessBoard); 

     chessBoard [0][0] = 1; 
     print(chessBoard); 

     chessBoard [1][0] = 1; 
     print(chessBoard); 

     clear(chessBoard); 
     print(chessBoard); 
    } 

    public static void print(int[][] chessBoard) 
    { 
     int rowhead = 1; 
     System.out.print("\n ");                        
     for (int col = 0; col < chessBoard[0].length; col++) 
      System.out.printf("%4s",((char) ('A' + col)));                  
     System.out.println();                         

     for (int[] row : chessBoard) 
     { 
      System.out.print(rowhead++ + ":");                      
      for (int griddisplay : row)                      
       System.out.printf("%4d", griddisplay);                     
      System.out.println();                         
     } 
     System.out.println(); 
    } 

    public static void clear(int[][] chessBoard) 
    { 
     for (int row = 0; row < chessBoard.length; row++) 
      for(int col = 0; col < chessBoard[row].length; col++) 
       chessBoard[row][col] = 0; 
    } 

}