【问题标题】:How to make these strings print beside each other如何使这些字符串并排打印
【发布时间】:2022-06-14 13:39:47
【问题描述】:
    public static void main(String[] args) {

        String A = "           AAA               \n"
                + "              A:::A              \n"
                + "             A:::::A             \n"
                + "            A:::::::A            \n"
                + "           A:::::::::A           \n"
                + "          A:::::A:::::A          \n"
                + "         A:::::A A:::::A         \n"
                + "        A:::::A   A:::::A        \n"
                + "       A:::::A     A:::::A       \n"
                + "      A:::::AAAAAAAAA:::::A      \n"
                + "     A:::::::::::::::::::::A     \n"
                + "    A:::::AAAAAAAAAAAAA:::::A    \n"
                + "   A:::::A             A:::::A   \n"
                + "  A:::::A               A:::::A  \n"
                + " A:::::A                 A:::::A \n"
                + "AAAAAAA                   AAAAAAA";
        
        String B = "\nBBBBBBBBBBBBBBBBB  \n"
                + "B::::::::::::::::B  \n"
                + "B::::::BBBBBB:::::B \n"
                + "BB:::::B     B:::::B\n"
                + "  B::::B     B:::::B\n"
                + "  B::::B     B:::::B\n"
                + "  B::::BBBBBB:::::B \n"
                + "  B:::::::::::::BB  \n"
                + "  B::::BBBBBB:::::B \n"
                + "  B::::B     B:::::B\n"
                + "  B::::B     B:::::B\n"
                + "  B::::B     B:::::B\n"
                + "BB:::::BBBBBB::::::B\n"
                + "B:::::::::::::::::B \n"
                + "B::::::::::::::::B  \n"
                + "BBBBBBBBBBBBBBBBB ";
        
        
        System.out.print(A);
        System.out.print(B);
    
    }
}

这是我尝试做的简化版本,当我运行它时,A 出现在 B 的顶部,我希望 A 和 B 并排打印出来,但我不知道怎么做。对此非常陌生,可能是一个愚蠢的问题,但我在网上找不到任何东西,所以我希望这里有人可以帮助我

【问题讨论】:

  • 那么你不能用换行符来做到这一点。

标签: java


【解决方案1】:

您可以使用\n 确定每一行并并排打印:

final String[] aa = A.split("\n");
final String[] ba = B.split("\n");
IntStream.range(0, aa.length).forEach((int idx) -> System.out.printf("%s %s\n", aa[idx], ba[idx]));

【讨论】:

  • 将那些“字段”(是的,它们只是本地参数)存储为String[] 并立即调用#split 甚至可能会很好,因为我认为那会是他们的主要用途。不错的方法。
【解决方案2】:

根据我对这个案子的了解,我可以向你推荐一个这样的灵魂之旅。

这可能不是最漂亮的解决方案,但它很容易理解,而且很有效。

public class Main {
    public static void main(String[] args) {

        String A = "              AAA               \n"
                + "              A:::A              \n"
                + "             A:::::A             \n"
                + "            A:::::::A            \n"
                + "           A:::::::::A           \n"
                + "          A:::::A:::::A          \n"
                + "         A:::::A A:::::A         \n"
                + "        A:::::A   A:::::A        \n"
                + "       A:::::A     A:::::A       \n"
                + "      A:::::AAAAAAAAA:::::A      \n"
                + "     A:::::::::::::::::::::A     \n"
                + "    A:::::AAAAAAAAAAAAA:::::A    \n"
                + "   A:::::A             A:::::A   \n"
                + "  A:::::A               A:::::A  \n"
                + " A:::::A                 A:::::A \n"
                + "AAAAAAA                   AAAAAAA";

        String B = "\nBBBBBBBBBBBBBBBBB  \n"
                + "B::::::::::::::::B  \n"
                + "B::::::BBBBBB:::::B \n"
                + "BB:::::B     B:::::B\n"
                + "  B::::B     B:::::B\n"
                + "  B::::B     B:::::B\n"
                + "  B::::BBBBBB:::::B \n"
                + "  B:::::::::::::BB  \n"
                + "  B::::BBBBBB:::::B \n"
                + "  B::::B     B:::::B\n"
                + "  B::::B     B:::::B\n"
                + "  B::::B     B:::::B\n"
                + "BB:::::BBBBBB::::::B\n"
                + "B:::::::::::::::::B \n"
                + "B::::::::::::::::B  \n"
                + "BBBBBBBBBBBBBBBBB ";
        
        List<String> arrayA = List.of(A.split("\n"));
        List<String> arrayB = List.of(B.split("\n"));

        for(String line : arrayA){
           line = line.replaceAll("\n","");
        }
        for(int i = 0; i < arrayA.size(); i++){
            System.out.println(arrayA.get(i)+arrayB.get(i));
        }


    }

【讨论】:

  • 第一个带有line = line.replaceAll 的循环将对arrayA 的内容产生 影响,因为这些更改只是在临时line 变量消失时被丢弃范围(新的循环迭代)。换行符已从 String#split 中删除,否则您的答案会错误地断言。
【解决方案3】:

如果将每个字符分成几行,则可以遍历行数并“并行”打印它们。下面是一个更简单的例子。

class Test {
    public static void main(String[] args) {
        String box1 = "+-+\n" +
                      "| |\n" +
                      "+-+";

        String box2 = "+-+\n" +
                      "|x|\n" +
                      "+-+";

        String[] lines1 = box1.split("\n");
        String[] lines2 = box2.split("\n");

        for (int i = 0; i < lines1.length; i++) {
            System.out.printf("%s %s\n", lines1[i], lines2[i]);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多