ユーザーから奇数を受け取り、魔方陣を作成するプログラムを作成する必要があります。魔方陣は、各行、列、および対角線の合計が同じになるものです。これらは、コードを記述するための特性です。
- ユーザーに奇数を尋ねる
- n 行 n 列の配列を作成します。
- 次の手順に従って、魔方陣を作成します。
を。最初の行の真ん中に 1 を置きます。
b. 行から 1 を引き、列に 1 を足します。
私。可能であれば、その位置に次の番号を配置します。
ii. できない場合は、次の手順に従ってください。
- 行 -1 の場合、最後の行に変更
- 最後の列が最初の列に変更された場合
- ブロックされている場合は、次の行にドロップダウンします (元の位置から)
- 右上隅にある場合は、次の行にドロップダウンします。
- 配列を印刷する
コードを書きましたが、実行すると、プログラムは 2 以外のすべての数字を入力します。何らかの理由で、私のプログラムはそれをスキップします。たとえば、奇数として 3 を入力すると、出力は次のようになります。
6 1 0
3 4 5
9 7 8
0 は存在しないはずですが、数字の 2 は存在します。これが私のコードです:
public static void main(String[] args) {
System.out.print("Give an odd number: ");
int n = console.nextInt();
int[][] magicSquare = new int[n][n];
int number = 1;
int row = 0;
int column = n / 2;
while (number <= n * n) {
magicSquare[row][column] = number;
number++;
row -= 1;
column += 1;
if (row == -1) {
row = n - 1;
}
if (column == n) {
column = 0;
}
if (row == 0 && column == n - 1) {
column = n - 1;
row += 1;
} else if (magicSquare[row][column] != 0) {
row += 1;
}
}
for (int i = 0; i < magicSquare.length; i++) {
for (int j = 0; j < magicSquare.length; j++) {
System.out.print(magicSquare[i][j] + " ");
}
System.out.println();
}
}
どこが間違っていたのか、なぜ私のプログラムが2番を飛ばしているのか教えてもらえますか? *これは宿題の質問なので、コードのみの回答でお願いします。ありがとう。