将字符串网格转换为多行字符串

时间:2014-02-12 02:19:47

标签: java arrays string

TL; DR版本

基本上,Java ASCII艺术品可以在它们出现的模式中输出潜在角色点网格的内容。如果转换为Courier New或其他所有字符宽度相同的字体,理论上输出应该与用户创建的模式类似。

详细版本

我正在尝试编写一个创建盒子网格的程序;网格的区域是用户指定的,因此宽度和高度就是 - 宽度和高度的整数。到目前为止,它一直很顺利,没有任何问题。

问题是,网格所包含的框是CharPoint.class的实例,每个实例包含一个单字母的字符串(我将这个字符串称为“内容”,因为缺少更好的术语)在选择CharPoint时由用户输入。 (如果内容字符串为null,则CharPoint显示为用户为其前景色选择的颜色的空框。)

我想迭代每个连续行中的每一列,并将该CharPoint内容的值添加到输出函数的输出字符串中,该输出函数将按照它们出现的顺序返回所有点的值。每行是一个字符串,因此如果用户有十行十列,则会有十个十字符的字符串。每个空值空间在输出(“”)中表示为空的空格字符串。

我在实际安排这个问题时遇到了一些困难。我尝试通过一个双循环,遍历每行中的每一列,如下所示:

for (int row = 0; row < this.height; row++)
{
    for (int column = 0; column < this.width; column++)
    {
        CharPoint cp = (CharPoint) charPoints.get(column + (row * 10));
        // other code here
    }
}

在确定正在查看该函数的CharPoint之后,应该获取CharPoint的内容并将其添加到初始长度为0的输出字符串的末尾(每行一个新的字符串)。在编译完整行字符串之后,它应该通过System.out.println()打印它(暂时忽略缺少适当的用户可访问输出)。不幸的是,我似乎找不到这样做的好方法,所以我不得不在这里发布这个荒谬的具体问题。

1 个答案:

答案 0 :(得分:0)

我希望你不要冒犯,但这确实看起来像家庭作业问题。我会用两个相关问题的解决方案来回答你的问题,这些问题有望提供帮助。

//Function to convert a list of characters to a String and print it
public void printCharactersAsString(List<Character> characters) {
  StringBuilder stringBuilder = new StringBuilder();
  for(Character c : characters) {
    stringBuilder.append(c);
  }
  String finalString = stringBuilder.toString();
  System.out.println(finalString);
}

//Function to sum up each row and print the sum
public void printSums(List<Integer> grid, int width, int height) {
  for(int row = 0; row < height; row++) {
    int sum = 0;
    for(int col = 0; col < width; col++) {
      int number = grid.get(col + row*width);
      sum += number;
    }
    System.out.println(sum);
  }
}