配列にロードし、その周囲の値から合計を取得してから、合計/6 に基づいて文字列値を新しい配列に割り当てています。したがって、それを実行すると、すべての配列値にnullではなく何かが含まれている必要があります。ただし、配列を印刷すると、印刷ステートメント内のランダムな「null」を除いて、(与えられた例に基づいて) 期待される出力が得られます。これらの null ステートメントが出てくる理由がわかりません。これが私のコードで、何が印刷され、何が印刷されるべきかの例です。
public static void displaymap(int maparray[][])
{
String mapicons[][] = new String [22][32];
int col=1;
int row=1;
int row2=0;
int col2=0;
double sum[]= new double [704];
for(int i=0;i<704;i++)
{
if(col ==33)
{
col = 1;
row++;
if(row==24)
{
row=0;
col=0;
break;
}
}
sum[i]=(double)(maparray[row][col]+maparray[row-1][col]+maparray[row+1][col]+maparray[row][col-1]+maparray[row][col+1])/6;
col++;
System.out.printf("%.2f\n",sum[i]);
if(sum[i]>9)
{
mapicons[row2][col2]=" #";
}
if(sum[i]>8&&sum[i]<9)
{
mapicons[row2][col2]=" *";
}
if(sum[i]>7&&sum[i]<8)
{
mapicons[row2][col2]=" +";
}
if(sum[i]>6&&sum[i]<7)
{
mapicons[row2][col2]=" .";
}
if(sum[i]<6)
{
mapicons[row2][col2]=" ";
}
col2++;
if(col2 ==32)
{
col2 = 0;
row2++;
}
}
for(row=0;row<22;row++)
{
for(col=0;col<32;col++)
System.out.printf("%s",mapicons[row][col]);
System.out.println();
}
}
これは出力されているものです:
null .
null # null
null . + . . +
. +null null . + . .
. .
+ . .null null
+ . null .
+ .null + .
. null . . . null
. . . .
. null +
nullnull
. . . . . .
. nullnull
.null
null . . .
. . . + . null
null null
. .
. + . .
null . . . . . null
. . * . .
そして、これは出力されるべきものです:
.
#
. + . . +
. + . + . .
. .
+ . .
+ . .
+ . + .
. . . .
. . . .
. +
. . . . . .
.
.
. . .
. . . + .
. .
. + . .
. . . . .
. . * . .
ご覧のとおり、ヌルを除いたものは本質的に同じであり、スペースを占有するヌルがなければ、特定の文字は適切にフォーマットされます。