-2

私はmagicsquareというJavaプロジェクトを作成しており、オンラインでその方法を検索しました。今、私は2番目のループがどのように機能するかを理解しようとしています.それが魔方陣を印刷して整列させることは知っていますが、詳細はわかりません. 私はすでに最初のものを知っています。誰かが私に2番目のループを説明してくれたら本当にありがたいです. ありがとう!

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!");
    }
  }
}
4

1 に答える 1

0

さて、まず明らかなこと。< 10とに関する部分< 100: 数値が 0 から 9 の間の場合、1 桁のみが出力されます。10 ~ 99 の場合は、2 つ出力されます。100 ~ 999 の場合は、3 桁で出力されます。(このコードは、0 から 999 までの数字のみに遭遇することを想定して書かれているようです。一般的に言えば、希望するだけでなく、何らかの方法で確実にすることが最善です。)

したがって、ifステートメントとその余分なスペースを使用すると、"5" は " 5" として出力されます (合計 3 文字の先頭の 2 つのスペースに注意してください)。25 は " 25" (再び 3 文字) として出力され、125 は "125" (再び 3 桁) として出力されます。すべての数字が 3 文字で出力されるため、すべてがきれいに列に並んで表示されます。

私を混乱させているのは、c最初に繰り返し処理を行っていることですr。これは、画面の 1 行に 1 列目を印刷し、次に 2 列目を 2 行目に、3 列目を 3 行目に印刷しているように見えます。つまり、全体が斜めに回転しています。しかし、それは単なるネーミングの問題かもしれません。

于 2015-09-17T21:21:59.867 に答える