我试图垂直反映这种艺术。
示例:
但这是我最终得到的结果:
以下是代码:
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);
}
这只是反转每一行中的每个字符串。我需要做一些填充以获得完美的不对称反转吗?还有其他建议吗?
答案 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());
}