2015-09-17 20 views
-2

我創建了一個名爲magicsquare的java項目,我在網上搜索瞭如何做到這一點。現在,我試圖理解第二個循環是如何工作的,我知道它打印和對齊魔術方塊,但我不知道細節。我已經知道第一個。如果有人向我解釋第二個循環,我會非常感激。謝謝!有人可以向我解釋第二個循環..我已經瞭解第一個..謝謝

import java.util.*; 
public class Magicsquare { 

     public static void main(String[] args) { 
      Scanner input = new Scanner(System.in); 

    try{ 
      int N; 
      System.out.print("Enter a number to create a Magic Square: "); 
      N=input.nextInt(); 

      if (N % 2 == 0){ 
       System.out.print("N must be an Odd number!"); 
      } 

      else{ 

      int[][] magic = new int[N][N]; 
      int row = N-1; 
      int col = N/2; 
      magic[row][col] = 1; 

      for (int i = 2; i <= N*N; i++) { 
       if (magic[(row + 1) % N][(col + 1) % N] == 0) { 
        row = (row + 1) % N; 
        col = (col + 1) % N; 
       } 
       else { 
        row = (row - 1 + N) % N; 

       } 
       magic[row][col] = i; 
      } 


      for (int c = 0; c < N; c++) { 
       for (int r = 0; r < N; r++) { 
        if (magic[r][c] < 10) System.out.print(" "); // for alignment 
        if (magic[r][c] < 100) System.out.print(" "); // for alignment 
        System.out.print(magic[r][c] + " "); 
       } 
       System.out.println(); 
      } 
     }main (null); 
    }catch (Exception e){ 
     System.out.print("Invalid Input!"); 
    } 
    } 
} 
+0

你從哪裏找到這段代碼? –

+0

我發現它在http://introcs.cs.princeton.edu/java/14array/MagicSquare.java.html ,但我稍微調整了它.. –

+0

我編輯它以顯示我創建的完整代碼。 –

回答

0

那麼,首先是顯而易見的。關於< 10< 100的部分:如果一個數字介於0和9之間,它只打印出一個數字。如果它介於10到99之間,則會打印出兩個。如果它在100到999之間,它將使用三位數字打印出來。 (看起來好像這個代碼是寫成假設它只會遇到0到999之間的數字。一般來說,最好確保某種方式而不是僅僅希望。)

因此,使用if語句和它們的額外空格,「5」將打印爲「5」(注意兩個前導空格總共三個字符)。 25將打印爲「25」(又是三個字符),125將打印爲「125」(三個數字)。由於所有數字都使用三個字符打印出來,因此所有內容都將整齊排列。

讓我感到困惑的是,您首先迭代了c,然後r。這似乎是說你要在屏幕上的單行上打印出第一列,然後將第二列作爲第二行,將第三列作爲第三行。即整個事物已經在對角線上旋轉了。但也許這只是一個命名問題。

+0

c和r就像魔術方塊的列和行一樣。 –

+0

@CarshCaNe:請不要自欺欺人,不要先嚐試自己解決這個問題。 –

+0

@Hovercraft充滿鰻魚 - 我已經自己計算了幾個小時,但缺乏培訓阻礙了我完全理解這些代碼。我剛開始學習java 2個月,現在減去了我的工作時間,因爲我不是專業程序員,我在一家遠離Java編程的公司工作。我試圖學習Java編程,因爲它對我感興趣。如果我不像你那樣天才,我很抱歉。 –

相關問題