Printing Java-使用格式化的Stringbuilder打印迷宫
我想用StringBuilder创建一个迷宫,它必须有特定的格式来匹配特定的输出。我使用下面的代码来实现这一点,但它删除了输出的第一行。 给定的示例是一个如下所示的字符串:Printing Java-使用格式化的Stringbuilder打印迷宫,printing,format,stringbuilder,modulo,maze,Printing,Format,Stringbuilder,Modulo,Maze,我想用StringBuilder创建一个迷宫,它必须有特定的格式来匹配特定的输出。我使用下面的代码来实现这一点,但它删除了输出的第一行。 给定的示例是一个如下所示的字符串: final String EXAMPLE01 = "############## ## ############ # # ## # # ##### ## # # # ## ### # # # ## # # # # #### # # # # ## # # #### ###
final String EXAMPLE01 = "############## ## ############ # # ## # # ##### ## # # # ## ### # # # ## # # # # #### # # # # ## # # #### ####### ## ##############";
以下是格式化字符串的代码:
private void init(Maze z) {
/**
* initializes de.uniwue.gdp.labyrinth.Explorer
*/
maze = z; //set maze
pov = POV.SOUTH; //set default point of view to South
idx = maze.width() + 1; //set default index to (1,1) || starting index
str = new StringBuilder(); //init empty StringBuilder
for (int i = 0; i < maze.width() * maze.height(); ++i) {
if (str.length() != 0 && (str.length() % maze.width() == 0)){ //use modulo to find linebreaks
str.append("\n");
}
str.append('#'); //set all fields to not explored or wall
}
str.setCharAt(idx, ' '); //set starting field to explored
updateDirections(); //init numMarks & validDirections
}
private void init(迷宫z){
/**
*初始化de.uniwue.gdp.迷宫.Explorer
*/
maze=z;//设置maze
pov=pov.SOUTH;//将默认视点设置为SOUTH
idx=maze.width()+1;//将默认索引设置为(1,1)| |起始索引
str=new StringBuilder();//初始化空StringBuilder
对于(int i=0;i
输出如下所示:
但应该是这样的:
final String EXAMPLE01 = "############## ## ############ # # ## # # ##### ## # # # ## ### # # # ## # # # # #### # # # # ## # # #### ####### ## ##############";
提前非常感谢 在这一行:
对于(int i=0;i“i”之前的“++”在求值之前递增“++”在“i”之后的“++”在求值之后递增。在这种情况下,循环可能从1开始,而不是从0开始。此循环中未使用增量表达式的返回值,因此将++i更改为i++不会对逻辑产生影响。在这两种情况下,循环都从0开始。是的,我认为问题与模运算有关。看起来它两次添加了一个新行。我确实让它从长度大于0的字符串开始。但这也不行。