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