繁体   English   中英

在 java 中以模式打印数组

[英]Printing an array in a pattern in java

这是我的 java 代码,用于以这种格式(数组格式)打印数组:

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();
}

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

我建议使用StringJoiner并格式化String 喜欢,

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

只需在此处再添加一个选项卡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();
}

Output:

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

您可以使用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();
});

Output:

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

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


另请参阅:如何将整个字符串替换为数组中的另一个字符串?

通过使用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]);
        }
    }
}

Output:

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

暂无
暂无

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

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