【问题标题】:JAVA : How can I represent a 2D character array as a String using a toString ?JAVA:如何使用 toString 将 2D 字符数组表示为字符串?
【发布时间】:2012-02-18 05:29:33
【问题描述】:

我正在使用 LRV(最近访问最少)算法制作程序。 基本上,我为机器人设计了穿过网格(这是一个二维字符数组)的算法。机器人在穿越网格时检查每个单元格是否为空(由“-”定义)、被占用(由“O”定义)或阻塞(由“X”定义)。 这些单元只能被称为传感器的对象占据(这有自己的类)。 无法遍历 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 字符数组表示为 -、O 和 X 的字符串。 我尽量详细一点,如果有人有任何问题,我愿意尽快回答。 任何帮助将不胜感激。 谢谢

瓦伦

【问题讨论】:

    标签: java arrays char 2d


    【解决方案1】:

    这是你的意思吗?

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

    【讨论】:

      【解决方案2】:
      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();
      }
      

      【讨论】:

        【解决方案3】:

        自然表示将是矩阵方式:

        "-----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)。 其他答案还可以。

        【讨论】:

        • 好吧,我没听懂你在说什么,但是你给我看的矩阵的字符串表示看起来和我需要的结果很相似。
        • 其他答案会给你这样的结果(@yurib)。但是他们的 (i, j) 对应于您的 (y, x) - 其他顺序。
        【解决方案4】:

        做这样的事情

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

        【讨论】:

        • 我看到了,但是我必须将它们设为 -、O 或 X。
        • 向数组中添加字符时,不是将它们添加为 X 和 O 吗?例如,grid[0][0] = 'X';
        • @theDazzler 的解决方案也可以, += 将字符添加到结果字符串中。请允许我为他 +1;至少他使用你的 x,y 约定,字符串 += 不是很好,也可以添加 \n。
        • 更好用StringBuilder
        猜你喜欢
        • 2012-06-01
        • 2016-09-05
        • 1970-01-01
        • 1970-01-01
        • 2018-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-04
        相关资源
        最近更新 更多