三重嵌套循环打印过多的字符

时间:2013-02-28 00:06:31

标签: java loops nested

我正在制作一个程序,并尝试打印10x10的电路板。如果我的对象坐标匹配i和j循环整数的迭代,那么如果循环不应该打印' - ',则应该打印对象的char。但是在我的第三个嵌套循环上,因为15个对象坐标与程序不匹配,所以打印过量的' - '。当一个坐标匹配时,我如何简单地打印char,同时保持板形式。 董事会应该是这样的

. . . . . . . . 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("- ");
            }
        }
    }
}

导致类似

的内容

..........ķ.................................... ................................. ......................................... .................................................. .............................. ................................................ .................................................ñ .............................. ......................................... ....................一世............................. .............................. ......................................... ..........................˚F.....................即...........................升。 ........................... ........................ ^ h ... MP .................. ..Ø ......Ĵ.................... ............. .............ç...摹................................ .............................. ..............乙............ ..................................一个............... ......................... d .... .................................. .................................................. .............................. ................................................

任何想法如何格式化if语句以实现此目的?感谢

2 个答案:

答案 0 :(得分: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("- ");
        }

答案 1 :(得分: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());
            }
        }
    }
}