0

配列にロードし、その周囲の値から合計を取得してから、合計/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
                                       .             . * . .    

そして、これは出力されるべきものです:

                                       .                      
             #                                              
       .                     +                           . . +
 .     +                     . + .                       .  
         .                         .                            
                                   +     .       .          
                             +             .       .          
 +                                       . +     .            
               .                       . . .                
                           .                       .      . .  
                                                 .     +      

                   .         .                 .       . . .    
     .                                                      
                                                       .      
     .         .             .                                
 .   .           .           +   .                            

             .                                 .                
     .               +                           . .            
                .         . .                     .   .    
                                       .             . * . .    

ご覧のとおり、ヌルを除いたものは本質的に同じであり、スペースを占有するヌルがなければ、特定の文字は適切にフォーマットされます。

4

2 に答える 2

1

mapicons 値を設定するときに、問題は < および > に対処する必要があるようです。> 8 と < 8 の場合がありますが、== 8 の場合はありません (たとえば)。

この小さな変更を試してください:

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]="  ";
}
于 2013-11-01T20:59:51.580 に答える
1

コードで処理できない特殊なケースがいくつかあります。条件はありませんtrueので、mapicons完全には満たされていません。次に、null値が出力されます。

たとえば、 whensumは 8、7、または 6 と正確に等しくなります。

次のコードを試してください。

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]=" #";
        }
      else if(sum[i]>=8)
        {
          mapicons[row2][col2]=" *";
        }
      else if(sum[i]>=7)
        {
          mapicons[row2][col2]=" +";
        }
      else if(sum[i]>=6)
        {
          mapicons[row2][col2]=" .";
        }
      else
        {
          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();
      }
  }

編集:チェーンif/elseifの代わりに使用することもできます。if

于 2013-11-01T21:00:12.050 に答える