2013-02-12 114 views
-1

我試圖寫一個嵌套的循環,將打印出下面的代碼的值以特定的順序:打印有序二維數組 - 單線

public static void main(String[] args) { 

    int[][] array2d = new int[3][5]; 
    for (int i = 0; i < array2d.length; i++) { 
     for (int j = 0; j < array2d[0].length; j++) { 
      array2d[i][j] = (i * array2d[0].length) + j + 1; 
     } 
    } 

    for (int x = 0; x <= 4; x++) { 
     for (int y = 0; y <= 2; y++) { 
      System.out.println(array2d[y][x]); 
     } 
    } 
} 

}

當前的陣列以我想要的方式打印,但每個打印輸出都在單獨的行上。

我想要的輸出(單行)是這樣的:

1 6 11 2 7 12 3 8 13 4 9 14 5 10 15 

感謝您的幫助。

回答

1

您可以使用System.out.print代替:

System.out.print(array2d[y][x] + " "); 
1

更換printlnprint,它應該工作

1
String s = ""; 
for (int i = 0; i < array2d.length; i++) { 
    for (int j = 0; j < array2d[i].length; j++) { 
     s += array2d[i][j] + " "; 
    } 
} 
System.out.println(s); 
+0

for循環是相反的,所以這不會產生正確的結果。我也建議使用'StringBuilder'而不是字符串連接。 – 2013-02-12 21:47:50

0
public static void main(String[] args) { 
    int[][] array2d = new int[3][5]; 
    for (int i = 0; i < array2d.length; i++) { 
     for (int j = 0; j < array2d[0].length; j++) { 
      array2d[i][j] = (i * array2d[0].length) + j + 1; 
     } 
    } 
    StringBuilder builder = new StringBuilder(); 
    for (int x = 0; x <= 4; x++) { 
     for (int y = 0; y <= 2; y++) { 
      builder.append(array2d[y][x]); 
      if(!(x == 4 && y == 2)){ 
       builder.append(" "); 
      } 
     } 
    } 
    System.out.println(builder.toString()); 
} 

基本上,你說得對,除了改變printlnprint和格式化你想要的字符串。我改變了一點,以顯示StringBuilder是如何工作的。只要有可能,我使用StringBuilder,因爲它更方便。