JAVA:如何使用toString将2D字符数组表示为String?

时间:2012-01-24 23:24:34

标签: java arrays char 2d

我正在使用LRV(最近访问过的最少)算法制作程序。 基本上,我设计了一个机器人遍历网格(这是一个2D字符数组)的算法。遍历网格的机器人检查每个单元格是EMPTY(由' - '定义),OCCUPIED(由'O'定义)还是BLOCKED(由'X'定义)。 单元格只能被称为Sensor的对象占用(这有自己的类)。 无法遍历BLOCKED单元格。 每次机器人必须移动时,它接收来自传感器的方向。因此,在开始时,机器人将被放置在网格上,它将丢弃传感器并从中获取方向,或者从预先存在的传感器获取方向。

现在我已经解释了我的节目, 我的具体问题是,我有我的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;
  }
}

我想知道的是如何将我的2D char数组表示为 - ,O和X的字符串。 我试图尽可能详细,如果有人有任何问题,我愿意尽快回答。 任何帮助将受到高度赞赏。 感谢

Varun的

4 个答案:

答案 0 :(得分:4)

这是你的意思吗?

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

做这样的事情

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;
}

答案 3 :(得分:0)

自然表示将是明确的:

"-----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)。 其他答案都没关系。