【问题标题】:Printing an array in a pattern in java在java中以模式打印数组
【发布时间】:2021-03-29 14:58:06
【问题描述】:

这是我以这种格式打印数组的 java 代码 (Array Format):

for (int i = 0; i < strArr.length; i++) {
    for (int j = 0; j < i; j++) {
        System.out.print("\t");
    }
    for (int k = 0; k < (strArr.length - i); k++) {
        System.out.print(strArr[i] + "\t");
    }
    System.out.println();
}

但我得到了错误的格式 (Wrong pattern)。我试图找到错误,但似乎找不到。

【问题讨论】:

    标签: java arrays string loops


    【解决方案1】:

    您可以使用IntStream 代替循环。代码可能如下所示:

    String[] arr = new String[]{"aaa", "bbb", "ccc", "ddd", "eee"};
    
    String tab = "    ";
    String space = " ";
    
    IntStream.range(0, arr.length).forEach(i -> {
        IntStream.range(0, i)
                .forEach(j -> System.out.print(tab));
        IntStream.range(0, arr.length - i)
                .forEach(k -> System.out.print(arr[i] + space));
        System.out.println();
    });
    

    输出:

    aaa aaa aaa aaa aaa 
        bbb bbb bbb bbb 
            ccc ccc ccc 
                ddd ddd 
                    eee 
    

    或其他值:String tab = "\t";String space = "\t";


    另见:How to replace a whole string with another in an array?

    【讨论】:

      【解决方案2】:

      通过使用String#repeat,您可以使用单个循环来完成。

      public class Main {
          public static void main(String[] args) {
              String[] strArr = { "aaa", "bbb", "ccc", "ddd", "eee" };
              for (int i = 0; i < strArr.length; i++) {
                  System.out.println("\t".repeat(i) + (strArr[i] + "\t").repeat(strArr.length - i - 1) + strArr[i]);
              }
          }
      }
      

      输出:

      aaa aaa aaa aaa aaa
          bbb bbb bbb bbb
              ccc ccc ccc
                  ddd ddd
                      eee
      

      【讨论】:

        【解决方案3】:

        只需在此处添加一个标签System.out.print("\t\t");

        String[] strArr = new String[]{"aaa", "bbb", "ccc", "ddd", "eee"};
        for (int i = 0; i < strArr.length; i++) {
          for (int j = 0; j < i; j++) {
            System.out.print("\t\t");
          }
          for (int k = 0; k < (strArr.length - i); k++) {
            System.out.print(strArr[i] + "\t");
          }
          System.out.println();
        }
        

        输出:

        aaa aaa aaa aaa aaa 
            bbb bbb bbb bbb 
                ccc ccc ccc 
                    ddd ddd 
                        eee
        

        【讨论】:

          【解决方案4】:

          我建议使用StringJoiner 并格式化String(s)。喜欢,

          String[] strArr = { "aaa", "bbb", "ccc", "ddd", "eee" };
          for (int i = 0; i < strArr.length; i++) {
              StringJoiner sj = new StringJoiner("\t");
              for (int j = 0; j < i; j++) {
                  sj.add(String.format("%s", "   "));
              }
              for (int j = i; j < strArr.length; j++) {
                  sj.add(String.format("%s", strArr[i]));
              }
              System.out.println(sj);
          }
          

          输出(按要求)

          aaa aaa aaa aaa aaa
              bbb bbb bbb bbb
                  ccc ccc ccc
                      ddd ddd
                          eee
          

          【讨论】:

            猜你喜欢
            • 2013-11-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-10-23
            • 2011-07-12
            • 1970-01-01
            相关资源
            最近更新 更多