問題は、Nとして与えられた最大の正方形の辺から始めて、同心で入れ子になった正方形を作成することです。これは、紙に1つの正方形を描くのと同じように、辺の長さを4減らして、正方形を描くことができなくなるまで続けます。各正方形の後(サイドのstartPosから2つ、endPosから2つ); そして、Nは最初の正方形のサイズです。乗算記号('*')を使用して辺を描画する必要があります。
上の画像の比率(正方形よりも長方形のように見えます)は正確ではないかもしれませんが、何をする必要があるかについてのアイデアが得られます..以下のコードは私が試したものです...
public static void main(String[] args)
{
int N=9;
int iLo=0;
int iHi=N-1;
int jLo=0;
int jHi=N-1;
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
if(i==0 || (i==N-1) || (j==0) || (j==N-1))
System.out.print('*');
else
{
if(i<=N/2)
{
if((i%2==0) && (i>=iLo) && (i<=iHi) && (j>=jLo) && (j<=jHi))
System.out.print('*');
else
if(i==iLo || i==iHi )
System.out.print('*');
else
System.out.print(' ');
}
else
{
if((i%2==0) && (i>=iLo) && (i<=iHi) && (j>=jLo) && (j<=jHi))
System.out.print('*');
else
System.out.print(' ');
}
}
}
System.out.print(" i-->"+i+" iLo-->"+iLo+" iHi-->"+iHi+" jLo-->"+jLo+" jHi-->"+jHi);
if(i%2>0)
{
if(i<=N/2)
{
jLo=jLo+2;
jHi=jHi-2;
iLo=iLo+1;
iHi=iHi-1;
}
else
{
jLo=jLo-2;
jHi=jHi+2;
iLo=iLo-1;
iHi=iHi+1;
}
}
else
{
}
System.out.println();
}
}