2013-02-28 43 views
0

我正在处理程序,并尝试打印10x10的纸板。如果我的对象坐标匹配i和j循环整数的迭代,那么如果不是循环应该打印“ - ”,则应打印对象的字符。然而,在我的第三个嵌套循环中,因为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。。 .................................................. ................. ................................ ......... ........................................ ........................................ ......... ..... .................................. ............... ..................................ñ............... ............... .................................. ....... .................... I ..................... ...................................... ........... .............................. ................... .......˚F.....................Ë.................... ........ L .. ........................... .......... ..............^h ... MP ..................Ø........Ĵ... ................. ............. ............. C ... G .................................................. ............ .............. B ............ ......... .........................一个................... ..................... D .... ....................... ........... ...................................... .......................................... ....... .........................................

任何想法如何格式化if语句实现这个?感谢

+0

我建议你下载的NetBeans,Eclipse或类似的IDE,并学会使用其内置的调试器。对于任何程序员来说,这是一个强大且必不可少的工具。您可以逐行检查您的代码,并检查其行为是否符合您的期望。 – 2013-02-28 00:09:41

回答

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