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()打印它(暂时忽略缺少适当的用户可访问输出)。不幸的是,我似乎找不到这样做的好方法,所以我不得不在这里发布这个荒谬的具体问题。
答案 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);
}
}