//ケビン クレメント //Week3A 魔方陣
こんにちは、2 次元配列への入門的な割り当てを行っています。以下は私が行ったコードで、ほとんど完了しています。
私の問題は、配列を印刷する方法と、テストメソッドですべてを正しく実行する方法が完全にわからないことです。msq[order][order] = 1; の行で範囲外のエラーが発生します。
まだこのサイトに慣れていないため、質問の形式が間違っていたら申し訳ありません。どんな助けでも素晴らしいでしょう。ありがとう!
import java.util.*;
class Magic
{
private int order;
int msq[ ][ ];
public Magic(int size)
{
if(size < 1 || size % 2 == 0)
{
System.out.print("Order out of range");
order = 3;
}
msq = new int[order][order];
Build();
Display();
}
public void Build()
{
int row = 0;
int col =0;
msq[order][order] = 1;
for(int k = 1; k <= order * order; k++)
{
msq[row][col] = k;
if(row == 0 && col == order -1)
row++;
else if(row == 0)
{
row = order - 1;
col++;
}
else if(msq[row - 1][col + 1] != 0)
row++;
else if(msq[row -1][col + 1] == 0)
{
row--;
col++;
}
if(col == order - 1)
{
col = 0;
row--;
}
}
}
public void Display()
{
for(int i = 0; i < order; i++)
{
for(int k = 0; k < order; k++)
{
System.out.println(msq[i][k] + " ");
}
}
}
}