2 回答

TA貢獻1752條經(jīng)驗 獲得超4個贊
我們可以通過打印頂部邊框,然后打印中間內(nèi)容,最后打印底部邊框來處理這個問題。這里的技巧是我們實際上不必擔心超出數(shù)組的索引。對于模式的中間部分,我們只是迭代數(shù)組的邊界,并在兩邊附加一個邊界。除了第一個和最后一個鋸齒狀一維數(shù)組的大小外,頂部和底部邊框?qū)嶋H上并不涉及數(shù)組內(nèi)容。
for (int i=0; i <= array[0].length + 1; ++i) {
System.out.print("*");
}
System.out.println();
for (int r=0; r < array.length; ++r) {
System.out.print("*");
for (int c=0; c < array[r].length; ++c) {
System.out.print(array[r][c]);
}
System.out.println("*");
}
for (int i=0; i <= array[array.length-1].length + 1; ++i) {
System.out.print("*");
}
*****
* *
* *
* *
* *
* *
*******

TA貢獻1864條經(jīng)驗 獲得超2個贊
我將從一種構(gòu)建單行的方法開始。這可以通過StringBuilder. 以 a 開頭*,添加作為輸入傳入的所有字符,最后添加另一個*。將其作為String. 喜歡,
public static String oneLine(char[] ch) {
StringBuilder sb = new StringBuilder();
sb.append("*");
sb.append(Stream.of(ch).map(String::valueOf).collect(Collectors.joining("")));
sb.append("*");
return sb.toString();
}
然后我們可以調(diào)用它來構(gòu)建所有的行。可以通過復制第一個和最后一個條目(所有空格為星號)來構(gòu)建大綱。喜歡,
char[][] arr = { { ' ', ' ', ' ' }, { ' ', ' ', ' ' }, { ' ', ' ', ' ', ' ' },
{ ' ', ' ', ' ', ' ' }, { ' ', ' ', ' ', ' ', ' ' } };
System.out.println(oneLine(arr[0]).replace(' ', '*'));
for (char[] ch : arr) {
System.out.println(oneLine(ch));
}
System.out.println(oneLine(arr[arr.length - 1]).replace(' ', '*'));
輸出(根據(jù)要求)
*****
* *
* *
* *
* *
* *
*******
添加回答
舉報