0

私はプログラムに取り組んでおり、10x10 のボードを印刷しようとしています。オブジェクト座標が i および j ループ整数の反復と一致する場合、ループが「-」を出力しない場合、オブジェクトの char が出力されます。ただし、15 個のオブジェクトの座標が一致しないため、3 番目のネストされたループでは、プログラムが過剰な量の「-」を出力します。ボードの形を保ちながら座標の1つが一致するときに、どうすればcharを簡単に印刷できますか。ボードは次のようになります

. . . . . . . . a .
. . e . . . b . . .
. . . . . . . . . .
. . . .c . . . . . .
. . . . . . . d . .
. . g . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . h . . . . .
. . . . . . . . . .

printメソッドの私のコードは

public static void printGrid(bumpercar bcar[], int NUMCARS)
{
    //nested loop
    for(int j = 0; j < 16; j++)
    {
    System.out.printf("\n");
        for(int k = 0; k<16; k++)
        {
            for(int l = 0; l<NUMCARS; l++)
             {
            if((bcar[l].getX() == k) && bcar[l].getY() == j)
            System.out.printf("%s", bcar[l].getCarSymbol());
            else
            System.out.printf("- ");
            }
        }
    }
}

次のような結果になります

.........K................................................. ................... ................................... ……………………………… ................................................................... . ................................................................. .................................................N. …………………………………… .................... ....................私......... ................................................................... …………………………………… …………ファ………………………… …………L……………………………… ………………H……MP…………O…… ....J.......................................................................... .C...G.................................................................. ……………………B …………………… ………………あ…………………………ニ…………………… ................................................................. ................................................................ .... ...................................................................

これを達成するために if ステートメントをフォーマットする方法はありますか? ありがとう

4

2 に答える 2

1

最も内側のループを次のように変更します。

        boolean found = false;
        for(int l = 0; l<NUMCARS; l++)
        {
          if((bcar[l].getX() == k) && bcar[l].getY() == j) {
            System.out.printf("%s", bcar[l].getCarSymbol());
            found = true;
            break;
          }
        }
        if (!found) {
            System.out.printf("- ");
        }
于 2013-02-28T00:09:35.080 に答える
0

問題は、特定のセルにある必要のない車を見つけるたびに文字を印刷していることです。

固定コード:

public static void printGrid(bumpercar bcar[], int NUMCARS)
{
    //nested loop
    for(int j = 0; j < 16; j++)
    {
        System.out.printf("\n");
        for(int k = 0; k<16; k++)
        {
            int l;
            for(l = 0; l<NUMCARS; l++)
            {
                if((bcar[l].getX() == k) && bcar[l].getY() == j) break;
            }
            if (l == NUMCARS) {
                // no car at this location
                System.out.printf("- ");
            } else {
                System.out.printf("%s", bcar[l].getCarSymbol());
            }
        }
    }
}
于 2013-02-28T00:11:02.583 に答える