Ява: Как я могу представить массив двумерных символов в виде строки, используя toString? - PullRequest
0 голосов
/ 25 января 2012

Я делаю программу, используя алгоритм LRV (последнее посещение).По сути, я разрабатываю алгоритм для робота, проходящего через сетку (которая является двумерным массивом символов).Робот, проходя через сетку, проверяет, является ли каждая ячейка ПУСТОЙ (определяется как «-»), ОБЯЗАНА (определяется как «О») или БЛОКИРОВАНА (определяется как «Х»).Ячейки могут быть заняты только объектом, известным как Датчик (у этого есть свой собственный класс).ЗАБЛОКИРОВАННЫЕ ячейки не могут быть пройдены.Каждый раз, когда робот должен двигаться, он получает направление от датчика.Таким образом, вначале робот будет помещен в сетку, и он уронит датчик и получит от него направление, или получит направление от уже существующего датчика.

Теперь, когда я объяснил свою программуМой конкретный вопрос: у меня есть класс GridMap

public class GridMap {
  private int height;
  private int width;
  private char[][] grid;


  public GridMap(int x, int y) { 
    height=x;
    width=y;  
    grid = new char [x][y];
  }
  public int getHeight(){
    return height;
  }
  public int getWidth(){
    return width;
  }
  public String toString(){
    String s1 = 
    return s1;
  }
  public char getElementAt(int x, int y){
  }
  public void setElementAt(int x, int y){
  }
  public boolean isCellBlocked(int x, int y){
  }
  public double getCoverageIndex(){
    return COVERAGE_INDEX;
  }
}

. Я хочу знать, как я могу представить свой массив двумерных символов в виде строк -, O и X.Я старался быть как можно более подробным, если у кого-то возникнут вопросы, я бы хотел ответить как можно скорее.Любая помощь будет высоко оценена.Спасибо

Варун

Ответы [ 4 ]

4 голосов
/ 25 января 2012

Это то, что вы имеете в виду?

public String toString()
{
    StringBuilder builder = new StringBuilder();
    for(int i = 0; i < getHeight(); i++)
    {
        for(int j = 0; j < getWidth(); j++)
        {
            builder.append(grid[i][j]);
        }
    }    
    return builder.toString();
}
0 голосов
/ 25 января 2012

Естественное представление будет матрично:

"-----X----O--X\n" + // i=0, j=0,...width-1
"---X----------\n" + // i=1, j=0,...width-1
...
"------XX---O--\n"   // i=height-1

К сожалению, вы используете не (i, j), а (x, y). Другие ответы в порядке.

0 голосов
/ 25 января 2012

Сделай что-нибудь подобное

public String toString()
{
    String result = "";
    for(int i = 0; x < grid.length; i++)
    {
        for(int y = 0; y < grid[x].length; y++)
        {
            //you may need to convert each char to string here first
            result += grid[x][y];
        }
    }
    return result;
}
0 голосов
/ 25 января 2012
public String toString() {
  StringBuilder sb = new StringBuilder();
  for (int i=0; i< this.grid.length; i++) {
    for (int j=0; j < this.grid[i].length; j++) {
      sb.append(grid[i][j]);
    }
    sb.append("\n");
  }
  return sb.toString();
}
...