【问题标题】: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