2013-02-28 5 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 ..................... E .................... ........ L .. ........................... .......... .............. Н ... МП .................. ........ О J ... ................. ............. ............. C ... G .................................................. ............ .............. B ............ ......... ......................... ................... ..................... D .... ....................... ............ ...................................... .......................................... ....... .........................................

любые идеи относительно формата утверждения if для достижения этого? благодаря

+0

Я предлагаю вам скачать NetBeans, Eclipse или аналогичный IDE и научиться использовать его встроенный отладчик. Это мощный и важный инструмент для любого программиста. Вы можете пропустить свой код по одной строке за раз и проверить, что он ведет себя так, как вы ожидаете. –

ответ

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()); 
      } 
     } 
    } 
} 
Смежные вопросы