0

我正在开发一个程序,并尝试打印一个 10x10 的板。如果我的对象坐标与 i 和 j 循环整数的迭代匹配,则应打印对象的 char,否则循环应打印“-”。然而,在我的第三个嵌套循环中,由于 15 个对象坐标不匹配,程序会打印出过多的“-”。当其中一个坐标匹配时,如何在保持棋盘形式的同时简单地打印字符。板子应该是这样的

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

我的打印方法代码是

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. ………………………………………………………………………………………………………………………………………………………… .................... ....................我......... ..................................................... …………………………………………………………………………………………………………………………………… ....................F........E....... ..........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 回答