簡體   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