镜像ascii艺术

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

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


但我最终得到的是:

代码如下:

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

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

m0rkklqb

m0rkklqb1#

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

  1. XO
  2. XXX

您将得到反向输出:

  1. OX
  2. XXX

当你想要的是:

  1. OX
  2. XXX

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

  1. int maxLen = 0;
  2. for(int i=0;i<coolDragon.size();i++) {
  3. if (cooDragon.get(i).length() > maxLen)
  4. maxLen = cooDragon.get(i).length();
  5. }
  6. StringBuilder reverse = new StringBuilder(maxLen);
  7. for(int i=0;i<coolDragon.size();i++) {
  8. reverse.setLnegth(0);
  9. for (int k=0; k<maxLen - coolDragon.get(i).length();k++) // add spaces
  10. reverse.append(' ');
  11. for (int j=coolDragon.get(i).length()-1;j>=0;j--)
  12. reverse.append(coolDragon.get(i).charAt(j));
  13. System.out.println(reverse.toString());
  14. }
展开查看全部

相关问题