Printing Java-使用格式化的Stringbuilder打印迷宫

Printing Java-使用格式化的Stringbuilder打印迷宫,printing,format,stringbuilder,modulo,maze,Printing,Format,Stringbuilder,Modulo,Maze,我想用StringBuilder创建一个迷宫,它必须有特定的格式来匹配特定的输出。我使用下面的代码来实现这一点,但它删除了输出的第一行。 给定的示例是一个如下所示的字符串: final String EXAMPLE01 = "############## ## ############ # # ## # # ##### ## # # # ## ### # # # ## # # # # #### # # # # ## # # #### ###

我想用StringBuilder创建一个迷宫,它必须有特定的格式来匹配特定的输出。我使用下面的代码来实现这一点,但它删除了输出的第一行。 给定的示例是一个如下所示的字符串:

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


“i”之前的“++”在求值之前递增“++”在“i”之后的“++”在求值之后递增。在这种情况下,循环可能从1开始,而不是从0开始。

此循环中未使用增量表达式的返回值,因此将++i更改为i++不会对逻辑产生影响。在这两种情况下,循环都从0开始。是的,我认为问题与模运算有关。看起来它两次添加了一个新行。我确实让它从长度大于0的字符串开始。但这也不行。