繁体   English   中英

如何在一行中打印多个字符串数组输出

[英]how to print Multiple String arrays output in a single line

我有3个String数组。 我想在Java中一个接一个地打印所有3个单个数组。 所以像我的2个数组看起来像-

  o  
 ooo 
ooooo
 ooo 
  o  

  o o
ooooo
 ooo 
ooooo
 o oo

我想一个接一个地打印数组的每个元素(彼此相邻)

当前代码结果-

  o  
 ooo 
ooooo
 ooo 
  o  
  o o
ooooo
 ooo 
ooooo
 o oo
 o o 
 ooo 
ooooo
 ooo 
  o  

如此预期的输出

  o  o o o  o  
 ooo ooooo oooo
ooooo ooo oooo 
 ooo ooooo oooo

上面的输出可能与输入不同,但是它只是我正在显示的示例。 这是我期望打印的方式。

当前代码

    String[] tp1 = { "  o  ", " ooo ", "ooooo", " ooo ", "  o  " };
    String[] tp2 = { "  o o", "ooooo", " ooo ", "ooooo", " o oo" };
    String[] tp3 = { " o o ", " ooo ", "ooooo", " ooo ", "  o  " };
    List<String[]> values = new ArrayList<>();
    values.add(tp1);
    values.add(tp2);
    values.add(tp3);
    for (String[] strings : values) {
        String output = "";
        for (String string : strings) {
            output += string;
            output += "\n";
        }
        System.out.print(output);
    }

您需要反转for循环。 因此,您不能for each语法使用。

采用,

for (int i = 0; i < tp1.length; i++) {
    for (int j = 0; j < values.size(); j++) {
        System.out.print(values.get(j)[i]);
    }
    System.out.println(" ");
}

使用Java 8,您可以像下面这样使用新的forEach和Lambda:

        values.forEach(value -> {
            Arrays.asList(value).forEach(array -> System.out.print(array));
            System.out.println();
        });

导致

  o   ooo ooooo ooo   o  
  o oooooo ooo ooooo o oo
 o o  ooo ooooo ooo   o

如果您真的想要这样:

  o    o o o o 
 ooo ooooo ooo 
ooooo ooo ooooo
 ooo ooooo ooo 
  o   o oo  o 

您可以这样做:

    for (int i=0; i<tp1.length; i++) {
        final int j = i;
        values.forEach(value -> System.out.print(value[j]));
        System.out.println();
    };

但是,我建议您翻转列表和/或数组。 由于尚不清楚所有数组tp1..3是否具有相同的长度。 例如,这种方式:

        String[] tp1 = { "  o  ", "  o o", " o o "};
        String[] tp2 = { " ooo ", "ooooo", " ooo "};
        String[] tp3 = { "ooooo", " ooo ", "ooooo" };
        String[] tp4 = { "  o  ", " o oo" , "  o  " };

        ArrayList<String[]> values = new ArrayList<>();
        values.add(tp1);
        values.add(tp2);
        values.add(tp3);
        values.add(tp4);

        values.forEach(value -> {
            Arrays.asList(value).forEach(array -> System.out.print(array));
            System.out.println();
        });

要获得该输出,您不需要values变量。 您必须在一行中输出所有数组的第一个字符串,因此请将for循环更改for

for (int i = 0; i < 5; i++) {
    System.out.println(tp1[i]+tp2[i]+tp3[i]);
}

我认为这应该可以解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM