镜像ASCII艺术

时间:2015-01-15 06:38:27

标签: java string ascii

我试图垂直反映这种艺术。

示例:

From this

To this

但这是我最终得到的结果:

enter image description here

以下是代码:

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);
}

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

1 个答案:

答案 0 :(得分:6)

你应该找出输入文件的哪一行的字符数最多,然后你必须用空格填充每一行,这样所有的行在你反转之前都有相同的长度。

例如,如果你没有用一个空格填充第一行:

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());
}