镜像ascii艺术

sirbozc5  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(286)

我试着垂直地镜像这门艺术。
例子:


但我最终得到的是:

代码如下:

String reverse;

for(int i=1;i<coolDragon.size();i++) // coolDragon is the name of the art. It is a txt file that I'm reading
{
    reverse = "";
    for (int j=coolDragon.get(i).length()-1;j>=0;j--) // probably the worst line of code
         reverse=reverse+coolDragon.get(i).charAt(j);
    System.out.println(reverse);
}

这只是反转每一行中的每一个字符串。我需要做些填充来得到完美的不对称反转吗?还有其他建议吗?

m0rkklqb

m0rkklqb1#

您应该找出输入文件中哪一行的字符最多,然后必须在每一行右键填充空格,以便所有行在反转之前具有相同的长度。
例如,如果您没有在第一行右键填充一个空格:

XO
XXX

您将得到反向输出:

OX
XXX

当你想要的是:

OX
XXX

还要注意,您正在跳过文件的第一行。 i 应该从0开始。
代码应如下所示:

int maxLen = 0;
for(int i=0;i<coolDragon.size();i++) {
    if (cooDragon.get(i).length() > maxLen)
        maxLen = cooDragon.get(i).length();
}
StringBuilder reverse = new StringBuilder(maxLen);
for(int i=0;i<coolDragon.size();i++) {
    reverse.setLnegth(0);
    for (int k=0; k<maxLen - coolDragon.get(i).length();k++) // add spaces
        reverse.append(' ');
    for (int j=coolDragon.get(i).length()-1;j>=0;j--) 
         reverse.append(coolDragon.get(i).charAt(j));
    System.out.println(reverse.toString());
}

相关问题