我想并排顯示這個倒金字塔,但問題是金字塔的右側與金字塔的左側不同。我怎樣才能解決這個問題?
和
。
package proj;
public class Looping {
public static void main(String[]args) {
for (int r=5; r>0; r--) {
for (int s=5-r; s>0; s--) {
System.out.print(" ");
}
for (int k=2*r-1; k>0; k--) {
System.out.print("*");
}
for (int s=5-r; s>0; s--) {
System.out.print(" ");
}
for (int k=2*r-1; k>0; k--) {
System.out.print("*");
}
System.out.println();
}
}
}
uj5u.com熱心網友回復:
String#repeat
您可以使用String#repeat.
演示:
public class Main {
public static void main(String[] args) {
final int ROWS = 5;
for (int i = 1; i <= ROWS; i ) {
String stars = "*".repeat((ROWS 1) * 2 - 2 * i - 1);
System.out.println(" ".repeat(i - 1) stars " ".repeat(i * 2 - 1) stars);
}
}
}
輸出:
********* *********
******* *******
***** *****
*** ***
* *
uj5u.com熱心網友回復:
解決這個問題的最好方法是想象金字塔在一個“框架”中并填滿所有字符。也就是說,您可以為框架中的每個位置列印一個空格或一個星號。目前您沒有列印第一個金字塔的尾隨空格,這意味著接下來的每個金字塔將越來越不平衡。
我寫它的方式是for為 X 和 Y 坐標設定一個雙回圈,然后有一個函式告訴我當前的 X 和 Y 是否落在特定的金字塔內(每個金字塔呼叫一次)。這也允許列印其他圖案。將其視為光線追蹤的一種簡單形式。
for (int y = 0; y < 22; y ) {
for (int x = 0; x < 7; x ) {
if (inPyramid(0, 0, x, y) || inPyramid(10, 0, x, y)) {
System.out.print("*");
else {
System.out.print(" ");
}
}
}
使用以下方法:
public boolean inPyramid(int pyramidOffsetX, int pyramidOffsetY, int x, int y) {
// TODO fill in the tricky part :)
}
這似乎有點難,但它很容易允許形狀重疊等,而且這是一種結構化得多的方法。
uj5u.com熱心網友回復:
為了繪制彼此相鄰的倒置金字塔,您需要知道金字塔的數量和金字塔的大小。
這是一個 O(n3) 復雜度演算法(三重嵌套回圈)。
public class Pyramids {
public static void main(String[] args) {
System.out.println(render(2, 9)); // 2 pyramids with a base of 9
System.out.println(render(4, 5)); // 4 pyramids with a base of 5
}
public static String render(int count, int size) {
StringBuffer buffer = new StringBuffer();
int rows = (int) Math.floor(size / 2) 1;
for (int row = 0; row < rows; row ) {
for (int pyramid = 0; pyramid < count; pyramid ) {
int indentSize = pyramid == 0 ? row : row * 2;
for (int indent = 0; indent < indentSize; indent ) {
buffer.append(" "); // indent
}
int starCount = size - (row * 2);
for (int star = 0; star < starCount; star ) {
buffer.append("*"); // star
}
buffer.append(" ");; // separator
}
buffer.append(System.lineSeparator()); // new-line
}
return buffer.toString();
}
}
輸出
********* *********
******* *******
***** *****
*** ***
* *
***** ***** ***** *****
*** *** *** ***
* * * *
這是上面 Java 代碼的 JavaScript 版本。
顯示代碼片段
const renderPyramids = (count, size) => {
let str = '';
const rows = Math.floor(size / 2) 1;
for (let row = 0; row < rows; row ) {
for (let pyramid = 0; pyramid < count; pyramid ) {
const indentSize = pyramid === 0 ? row : row * 2;
for (let indent = 0; indent < indentSize; indent ) {
str = ' '; // indent
}
const starCount = size - (row * 2);
for (let star = 0; star < starCount; star ) {
str = '*'; // star
}
str = ' '; // separator
}
str = '\n'; // new-line
}
return str;
};
console.log(renderPyramids(2, 9));
console.log(renderPyramids(4, 5));
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/534266.html
標籤:爪哇循环嵌套循环
